其实我建议你使用另外一种方式拨号
WinExec("rasdial ADSL(entryname) 201*****(username) *****(password)",SW_HIDE);
断开链接
WinExec("rasdial ADSL(entryname) /DISCONNECT",SW_HIDE);一样的效果,省很多心。
并且,相关的帮助在cmd.exe里面输入:
rasdial /help
就知道了

解决方案 »

  1.   

        RASDIALPARAMS rdParams;
        rdParams.dwSize = sizeof(RASDIALPARAMS);
        strcpy(rdParams.szEntryName, "拨号连接");
    lstrcpy( rdParams.szPhoneNumber, m_strPhoneNumber );
    rdParams.szCallbackNumber[0] = '\0';
    lstrcpy( rdParams.szUserName, m_strUserName );
    lstrcpy( rdParams.szPassword, m_strPassword );
    rdParams.szDomain[0] = '\0'; HRASCONN hRasConn = NULL;
        DWORD dwRet = RasDial( NULL, NULL, &rdParams, 0L, NULL, &hRasConn );
        if ( dwRet == 0 )  
    return true;
      

  2.   

    1楼的方法是我N年前用VB的时候用的,太弱智,根本没有办法得到拨号详细信息
    2楼的写的跟没写一样
    这个问题我已经解决了DwNotifierType参数决定后面的参数是窗口句柄接收消息还是使用回调函数
    可以选择4种取值:
    0XFFFFFFFF
    1
    2
    3
    dwNotifier参数为空的话则是同步通信,忽略前面的参数,即函数处理完毕后才返回消息,这个消息比如“用户名密码错误”之类,若不为空,则是异步通信,返回的消息比如“打开端口”“打开设备”之类的,有四种方式:
    接收窗口的句柄
    RasDialFunc
    RasDialFunc1
    RasDialFunc2现在有新的问题了。我想把两种消息集合到一起  
    也就是说同步和异步的消息都得到 比如打开设备               同步
    打开端口               同步
    验证用户名和密码       同步
    用户名和密码无效      异步
      

  3.   

    也就是把MSDN的E文翻译出来~~
    呵呵~