65.9K
CodeProject is changing. Read more.
Home

Opening a Dial-Up connection

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.60/5 (5 votes)

Jan 14, 2000

viewsIcon

150812

downloadIcon

2884

How to open a new dialup connection using RasDial

  • Download demo project - 10 Kb
  • There is a code for Dial-Up connection. Alexander Fedorov discusses in his article Calling RasHangUp without errors how to disconnect a dial-up connection. This is other part of same problem (accessing the internet via phone line). This task can be done by using the CInternetSession::GetFtpConnection() function for example, but only if all parameters in the dial-up dialog are present (but then you can't set the username, password and phone number programatically).

    To use this function you must include the "ras.h" and "raserror.h" header files and link with rasapi32.lib.

    bool DialUp() 
    {    
        // Fill RASDIALPARAMS structure
        RASDIALPARAMS rdParams;
        rdParams.dwSize = sizeof(RASDIALPARAMS);
        rdParams.szEntryName[0] = '\0';
        lstrcpy(rdParams.szPhoneNumber, szPhoneNumberToDial);
        rdParams.szCallbackNumber[0] = '\0';
        lstrcpy( rdParams.szUserName, szUserName );
        lstrcpy( rdParams.szPassword, szPassword );    
        rdParams.szDomain[0] = '\0';
    
        HRASCONN hRasConn = NULL;
        DWORD dwRet = RasDial( NULL, NULL, &rdParams, 0L, NULL, &hRasConn );
    
        // Everything OK?
        if (dwRet == 0)  
            return true;    
    
        // Error occurred - get error description and alert user
        char  szBuf[256];
        if (RasGetErrorString( (UINT)dwRet, (LPSTR)szBuf, 256 ) != 0 )
            wsprintf( (LPSTR)szBuf, "Undefined RAS Dial Error (%ld).", dwRet );
        RasHangUp( hRasConn );
        AfxMessageBox( NULL, (LPSTR)szBuf, "Error", MB_OK | MB_ICONSTOP );
    
        return false;
    }
    

    Note that here I'm using the synchronous version (the fifth parameter of RasDial() is NULL). The updated version can use a pointer to the RasDialFunc() function instead, and then RasDial() returns immediately and calls RasDialFunc() when WM_RASDIALEVENT occurs.