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 を返す必要があります。
エラーが発生した場合、RasDialDlg は RASDIALDLG 構造体の dwError メンバーをルーティングおよびリモート アクセス エラー コードまたは Winerror.h の値に設定する必要があります。
注釈
RasDialDlg 関数は、ユーザーが [ダイヤル] ボタンを選択したときに [ダイヤルアップ ネットワーク] ダイアログ ボックスメイン表示されるダイアログ ボックスに似た一連のダイアログ ボックスを表示します。 RasDialDlg 関数を使用すると、電話帳ダイアログ ボックスを表示せずに、接続操作の標準ユーザー インターフェイスメイン表示できます。 たとえば、RAS AutoDial サービスでは、この関数を使用して、リモート アドレスに関連付けられている電話帳エントリを使用して接続を確立します。
RasDialDlg 関数は、接続操作中にダイアログ ボックスを表示して、操作の進行状況に関するフィードバックをユーザーに提供します。 たとえば、操作のダイヤル時、リモート サーバーでユーザーの資格情報を認証するタイミングなどを示すダイアログ ボックスが表示される場合があります。 ダイアログ ボックスには、ユーザーが操作を終了するための [キャンセル] ボタンも表示されます。
RasDialDlg は、接続が確立されたとき、またはユーザーが操作をキャンセルしたときにを返します。
次のサンプル コードは、変数 lpszEntry で指定された既定の電話帳のエントリをダイヤルします。
#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 |