win32 API 函数的做法 :
要用的函数: InternetGetConnectedState
函数原形:
BOOL InternetGetConnectedState(LPDWORD lpdwFlags,DWORD dwReserved);
参数 lpdwFlags 返回当前网络状态 , 参数 dwReserved 依然是保留参数,设置为 0 即可。
INTERNET_CONNECTION_MODEM 通过调治解调器连接网络
INTERNET_CONNECTION_LAN 通过局域网连接网络
这个函数可以:
1. 判断网络连接是通过网卡还是通过调治解调器
2. 是否通过代理上网
3. 判断连接是 On Line 还是 Off Line
4. 判断是否安装 “ 拨号网络服务 ”
5. 判断调治解调器是否正在使用
这个 win32 API 在系统 system32 文件夹中 winInet.dll 中
定义判断网络连接的类
private const int INTERNET_CONNECTION_MODEM = 1; // 通过调治解调器连接网络
private const int INTERNET_CONNECTION_LAN = 2; // 通过局域网连接网络
//MSDN 中对DllImportAttribute 的解释是这样的:可将该属性应用于方法。
//DllImportAttribute 属性提供对从非托管 DLL 导出的函数进行调用所必需的信息。作为最低要求,必须提供包含入口点的 DLL 的名称。
[DllImport ("winInet.dll" )]
private static extern bool InternetGetConnectedState(
ref int dwFlag,
int dwReserved
);
判断网络的函数实现
// 判断网络连接
public static bool ConnectState(ref string param_ReturnValue)
{
System.Int32 dwFlag = new int ();
if (!InternetGetConnectedState(ref dwFlag, 0))
{
param_ReturnValue = " 网络未连接" ;
return false ;
}
else if ((dwFlag & INTERNET_CONNECTION_MODEM) != 0)
{
param_ReturnValue = " 采用调治解调器上网" ;
return true ;
}
else if ((dwFlag & INTERNET_CONNECTION_LAN) != 0)
{
param_ReturnValue = " 采用网卡上网" ;
return true ;
}
else
{
return true ;
}
}