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()
{
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 );
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 );
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.