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; } |