在使用Internet后挂断线路
【打印文章】
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;
}
解决方法:
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;
}
本栏文章均来自于互联网,版权归原作者和各发布网站所有,本站收集这些文章仅供学习参考之用。任何人都不能将这些文章用于商业或者其他目的。( Pfan.cn )
【编程爱好者论坛】