Tips.14 C++Builder/Windowsプログラミング
ダイヤルアップをプログラムから接続する
ダイヤルアップネットワークの設定は、完了している事を前提にしています。 
接続の名前(マニュアルでは、 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完了"); 
    } 
}

戻る [参照] WIN32API SDK RasDial | サンプル