ダイヤルアップネットワークの設定は、完了している事を前提にしています。
接続の名前(マニュアルでは、 Phonebookと呼ばれてます)は、"接続”だと仮定します。
ダイヤルアップの一覧を取得する方法は、tips16,tips17を参照して下さい。
//コールバック関数の宣言
void WINAPI RasDialFunc(UINT unMsg,RASCONNSTATE
rasconnstate,DWORD dwError);
//エラー表示関数の宣言
void __fastcall ShowRasError(unsigned
int ErrorCode);
void __fastcall ShowRasError(unsigned
int ErrorCode)
{
char buf[1024];
RasGetErrorString(ErrorCode,
buf, 1024);
AnsiString tmp = buf;
ShowMessage(tmp);
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
//
RasEnumConnections()を使って既にダイヤルアップが確立されているか調べる。
...省略
//
RASDIALPARAMS RasParam;
RasParam.dwSize = sizeof(RASDIALPARAMS);
strcpy( RasParam.szEntryName,
"接続");
//接続の名前
strcpy( RasParam.szPhoneNumber,
"");
strcpy( RasParam.szCallbackNumber,
"");
strcpy( RasParam.szUserName,
"maruoka"); //ユーザ名
strcpy( RasParam.szPassword,
"Password");
//パスワード
strcpy( RasParam.szDomain,
"") ;
HRASCONN hras;
unsigned int ret = RasDial(NULL,
"", &RasParam,
0, RasDialFunc, &hras);
if (ret)
{
ShowRasError(ret);
}
else
{
ShowMessage("切断");
//ここには、接続が完了する前に来るので
//何らかの方法で接続の終了を待つ必要がある
RasHangUp(hras);
}
}
//コールバック関数定義
//接続が完了するまで、状態が変わる度に呼び出される。
VOID WINAPI RasDialFunc(UINT unMsg,RASCONNSTATE
rasconnstate,DWORD dwError)
{
if ( dwError) //接続に失敗すると非0を返す
{
ShowRasError(dwError);
return;
}
//このほかにもまだ、状態を示す値がある。
if ( rasconnstate == 0)
{
Form1->Memo1->Lines->Add("接続準備中");
}
else if ( ( rasconnstate ==
RASCS_DONE ) )
{
Form1->Memo1->Lines->Add("成功");
}
else if ( rasconnstate ==
RASCS_ConnectDevice)
{
Form1->Memo1->Lines->Add("ダイアル中");
}
else if ( rasconnstate ==
RASCS_StartAuthentication)
{
Form1->Memo1->Lines->Add("ユーザ認証開始");
}
else if ( rasconnstate ==
RASCS_LogonNetwork)
{
Form1->Memo1->Lines->Add("LOGON完了");
}
} |