只在XP下用过RasDial调用系统API来实现拨号上网,
不知道是否可以把代码直接在WIN7下使用?

解决方案 »

  1.   

    //拨号连接网络
    bool  DialUp() 
    {   
        RASDIALPARAMS rdParams;
        rdParams.dwSize = sizeof(RASDIALPARAMS);
        
        //设置宽带连接名称
        lstrcpy(rdParams.szEntryName, "adsl");     //设置用户名和密码
        lstrcpy( rdParams.szUserName, m_strUserName );    
        lstrcpy( rdParams.szPassword, m_strPassword ); 
        
        rdParams.szPhoneNumber[0]='\0';
        rdParams.szCallbackNumber[0] = '\0';      
        rdParams.szDomain[0] = '\0';
        
        HRASCONN hRasConn = NULL;
        DWORD dwRet = RasDial( NULL, "rasphone.pbk", &rdParams, 0L, NULL, &hRasConn );
        
        if ( dwRet == 0 ) 
        {
            return true;
        }
           
        char  szBuf[256];
        if ( RasGetErrorString( (UINT)dwRet, (LPSTR)szBuf, 256 ) != 0 )
            wsprintf( (LPSTR)szBuf, "Undefined RAS Dial Error (%ld).", dwRet );
        
        RasHangUp( hRasConn );
        
        return false;
    }//断开网络
    bool HangUp() 
    {
        RASCONN ras[20];
        DWORD  dSize, dNumber;
        char  szBuf[256];
        
        ras[0].dwSize = sizeof( RASCONN );
        dSize = sizeof( ras );  
        DWORD  dwRet = RasEnumConnections( ras, &dSize, &dNumber ); 
        if ( dwRet != 0 )
        {        
            if ( RasGetErrorString( (UINT)dwRet, (LPSTR)szBuf, 256 ) != 0 )
                wsprintf( (LPSTR)szBuf, "Undefined RAS Enum Connections error (%ld).", dwRet );
            MessageBox( (LPSTR)szBuf, "RasHangUp", MB_OK | MB_ICONSTOP );
            return false;
        }
        bool bOK = true;
        for( DWORD dCount = 0;  dCount < dNumber;  dCount++ )
        {  
            HRASCONN hRasConn = ras[dCount].hrasconn;
            DWORD dwRet = RasHangUp( hRasConn ); 
            if ( dwRet != 0 )
            {           
                char  szBuf[256];
                if ( RasGetErrorString( (UINT)dwRet, (LPSTR)szBuf, 256 ) != 0 )
                    wsprintf( (LPSTR)szBuf, "Undefined RAS HangUp Error (%ld).", dwRet );
                bOK = false;
            }
        }
        return bOK;
    }
      

  2.   

    从XP下拷贝一个rasman.dll,到WIN7下就可以正常执行。