WinInet API提供的功能很强大,但是当关闭掉Internet事务却不能关闭掉dial up连接。在WinInet API中没有提供相应的函数完成该功能。
解决方法:
RAS API可以通过调用RasHangUp()关闭连接,但是需要RAS句柄。有两种方法可以得当RAS句柄:1、自己建立RAS连接是保存该句柄,但这样做对与解决当前提出的
问题是没必要的,2、通过RasEnumConnections()列举所有句柄。
所需环境:
RASAPI32.DLL,该连接库在安装播号网络时会自动安装。
RAS.H
RASAPI32.LIB
示范代码:
// Quit a dial up connection - rasapi32.lib und #include "ras.h" needed
bool DisconnectRas()
{
bool bOk = false;
RASCONN ras[20];
DWORD dSize,dNumber,dCount;
ras[0].dwSize = sizeof(RASCONN);
dSize = sizeof( ras );
// Get active RAS - Connection
if( RasEnumConnections( ras, &dSize, &dNumber ) == 0 )
{
bOk = true;
for( dCount = 0; dCount < dNumber; dCount++ )
{
// Hang up that connection
if( RasHangUp(ras[dCount].hrasconn) != 0 )
{
bOk = false;
break;
}
}
}
return bOk;
}