|
|
1、有一个ras的api函数RasEnumConnections可以查出现在系统中所有的连接,返回是0就是没有连接了。
下面是一个例子:
BOOL WINAPI IsModemOnline()
{
RASCONN ras[20];
DWORD dSize,dNumber,dCount;
ras[0].dwSize = sizeof(RASCONN);
dSize = sizeof( ras );
if( RasEnumConnections( ras, &dSize, &dNumber ) == 0 )
if(dNumber>0)return TRUE;
return FALSE;
}
如果返回TRUE就表示有连接。该例子在VC 6.0 pack2 + Win2000 pro通过。
2
用Win32 API 函数,定义在Wininet.h中:
BOOL InternetGetConnectedState()
VC/BC/BCB 都可用。
3、在线返回 TRUE, 掉线返回 FALSE。遍历系统中所有 RAS 连接判断连接情况。Win2K/98 VC6 通过
BOOL CRasThread::GetConnectState()
{
LPRASCONN lpRasConn = NULL;
DWORD cbBuf = 0;
DWORD cConn = 0;
DWORD dwRet = 0;
HRASCONN hrasconn;
RASCONNSTATUS rasStatus;
UINT ndx;
// enumerate connections
cbBuf = sizeof(RASCONN);
if ( (lpRasConn = ( LPRASCONN ) malloc((UINT)cbBuf)) != NULL)
{
lpRasConn->dwSize = sizeof( RASCONN );
dwRet = RasEnumConnections( lpRasConn, &cbBuf, &cConn );
for (ndx = 0; ndx < cConn; ndx++)
{
// get to HRASCONN
hrasconn = lpRasConn[ndx].hrasconn;
// get connection status
rasStatus.dwSize = sizeof(RASCONNSTATUS);
dwRet = RasGetConnectStatus( hrasconn, &rasStatus );
if ( dwRet )
return 0;
else
{
if (rasStatus.rasconnstate == RASCS_Connected)
return 1;
else return 0;
}
}
}
else
{
return 0;
}
}
|
|