Opening a Dial-Up connection






4.60/5 (5 votes)
Jan 14, 2000

150812

2884
How to open a new dialup connection using RasDial
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.