RasDialDlgA 関数 (rasdlg.h)

RasDialDlg 関数は、指定された電話帳エントリとログオン ユーザーの資格情報を使用して RAS 接続を確立します。 関数は、接続操作の状態を示すダイアログ ボックスのストリームを表示します。

構文

BOOL RasDialDlgA(
  [in] LPSTR        lpszPhonebook,
  [in] LPSTR        lpszEntry,
  [in] LPSTR        lpszPhoneNumber,
  [in] LPRASDIALDLG lpInfo
);

パラメーター

[in] lpszPhonebook

電話帳 (PBK) ファイルの完全なパスとファイル名を指定する null で終わる文字列へのポインター。 このパラメーターが NULL の場合、関数は現在の既定の電話帳ファイルを使用します。 既定の電話帳ファイルは、[ダイヤルアップ ネットワーク] ダイアログ ボックスの [ユーザー設定] プロパティ シートでユーザーが選択したファイルです。

[in] lpszEntry

ダイヤルする電話帳エントリの名前を指定する null で終わる文字列へのポインター。

[in] lpszPhoneNumber

電話帳エントリに格納されている番号をオーバーライドする電話番号を指定する null で終わる文字列へのポインター。 このパラメーターが NULL の場合、 RasDialDlg は電話帳エントリの番号を使用します。

[in] lpInfo

追加の入力パラメーターと出力パラメーターを指定する RASDIALDLG 構造体へのポインター。 この構造体の dwSize メンバーは sizeof(RASDIALDLG) を指定する必要があります。 エラーが発生した場合、 dwError メンバーは エラー コードを返します。それ以外の場合は、0 を返します。

戻り値

関数が RAS 接続を確立した場合、戻り値は TRUE です。 それ以外の場合、関数は FALSE を返す必要があります。

エラーが発生した場合、RasDialDlgRASDIALDLG 構造体の dwError メンバーをルーティングおよびリモート アクセス エラー コードまたは Winerror.h の値に設定する必要があります。

注釈

RasDialDlg 関数は、ユーザーが [ダイヤル] ボタンを選択したときに [ダイヤルアップ ネットワーク] ダイアログ ボックスメイン表示されるダイアログ ボックスに似た一連のダイアログ ボックスを表示します。 RasDialDlg 関数を使用すると、電話帳ダイアログ ボックスを表示せずに、接続操作の標準ユーザー インターフェイスメイン表示できます。 たとえば、RAS AutoDial サービスでは、この関数を使用して、リモート アドレスに関連付けられている電話帳エントリを使用して接続を確立します。

RasDialDlg 関数は、接続操作中にダイアログ ボックスを表示して、操作の進行状況に関するフィードバックをユーザーに提供します。 たとえば、操作のダイヤル時、リモート サーバーでユーザーの資格情報を認証するタイミングなどを示すダイアログ ボックスが表示される場合があります。 ダイアログ ボックスには、ユーザーが操作を終了するための [キャンセル] ボタンも表示されます。

RasDialDlg は、接続が確立されたとき、またはユーザーが操作をキャンセルしたときにを返します。

次のサンプル コードは、変数 lpszEntry で指定された既定の電話帳のエントリをダイヤルします。

メモ この簡単なサンプルは、Windows Vista 以降のバージョンの Windows で実行することを目的としています。 sizeof(RASENTRY) の呼び出しでは、コードが実行されているオペレーティング システムのバージョンに応じて異なる値が返されることに注意してください。 これが適切に処理されるようにする手順を実行してください。
 
#include <windows.h>
#include <stdio.h>
#include "ras.h"
#include "rasdlg.h"
#include <tchar.h>
#include "strsafe.h"

#define PHONE_NUMBER_LENGTH 7
#define DEVICE_NAME_LENGTH 5
#define DEVICE_TYPE_LENGTH 5

DWORD __cdecl wmain(){

    DWORD dwError = ERROR_SUCCESS;
    BOOL nRet = TRUE;
    LPTSTR lpszEntry = L"EntryName";
    LPTSTR lpszphonenumber = L"5555555";
    LPTSTR lpszdevicename = L"Modem";
    LPTSTR lpszdevicetype = RASDT_Modem;

    // Allocate heap memory and initialize RASENTRY structure
    LPRASENTRY lpentry = (LPRASENTRY)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(RASENTRY));
    // Allocate heap memory and initialize RASDIALDLG structure
    LPRASDIALDLG lpInfo = (LPRASDIALDLG) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(RASDIALDLG));
    
    if (lpentry == NULL || lpInfo == NULL){
        wprintf(L"HeapAlloc failed");
        HeapFree(GetProcessHeap(), 0, lpentry);
        HeapFree(GetProcessHeap(), 0, lpInfo);
        return 0;
    }

    // The RASDIALDLG and RASENTRY dwSize members have to be initialized or the RasDialDlg()
    // RasSetEntryProperties() APIs will fail below.
    lpInfo->dwSize = sizeof(RASDIALDLG);
    lpentry->dwSize = sizeof(RASENTRY);
    lpentry->dwFramingProtocol = RASFP_Ppp;
    lpentry->dwfOptions = 0;
    lpentry->dwType = RASFP_Ppp;
    dwError |= StringCchCopyN(lpentry->szLocalPhoneNumber, RAS_MaxPhoneNumber, lpszphonenumber, PHONE_NUMBER_LENGTH);
    dwError |= StringCchCopyN(lpentry->szDeviceName, RAS_MaxDeviceName, lpszdevicename, DEVICE_NAME_LENGTH);
    dwError |= StringCchCopyN(lpentry->szDeviceType, RAS_MaxDeviceType, lpszdevicetype, DEVICE_TYPE_LENGTH);
    
    if (dwError != S_OK){
        wprintf(L"Structure initialization failed: Error = %d\n", dwError);
        HeapFree(GetProcessHeap(), 0, lpentry);
        HeapFree(GetProcessHeap(), 0, lpInfo);
        return 0;
    }

    // Validate the new entry's name
    dwError = RasValidateEntryName(NULL, lpszEntry);
    if (dwError != ERROR_SUCCESS){
        wprintf(L"RasValidateEntryName failed: Error = %d\n", dwError);
        HeapFree(GetProcessHeap(), 0, lpentry);
        HeapFree(GetProcessHeap(), 0, lpInfo);
        return 0;
    }

    // Create and set the new entry's properties
    dwError = RasSetEntryProperties(NULL, lpszEntry, lpentry, lpentry->dwSize, NULL, 0);
    if (dwError != ERROR_SUCCESS){
        wprintf(L"RasSetEntryProperties failed: Error = %d\n", dwError);
        HeapFree(GetProcessHeap(), 0, lpentry);
        HeapFree(GetProcessHeap(), 0, lpInfo);
        return 0;
    }
    
    // Connect using the new entry
    nRet = RasDialDlg(NULL, lpszEntry, NULL, lpInfo);
    if (nRet != TRUE){
        wprintf(L"RasDialDlg failed: Error = %d\n", lpInfo->dwError);
    }
    
    // Clean up: delete the new entry
    dwError = RasDeleteEntry(NULL, lpszEntry);
    if (dwError != ERROR_SUCCESS){
        wprintf(L"RasDeleteEntry failed: Error = %d\n", dwError);
    }
    
    HeapFree(GetProcessHeap(), 0, lpentry);
    HeapFree(GetProcessHeap(), 0, lpInfo);

    return 0;
}

注意

rasdlg.h ヘッダーは RasDialDlg をエイリアスとして定義します。このエイリアスは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー rasdlg.h
Library Rasdlg.lib
[DLL] Rasdlg.dll

こちらもご覧ください

RASDIALDLG

RasPhonebookDlg

リモート アクセス サービス (RAS) の概要

リモート アクセス サービス関数