获取Windows网络连接状况
来源:互联网 发布:ubuntu g 编译命名 编辑:程序博客网 时间:2024/05/21 16:59
基本思路是封装对于Windows API InternetGetConnectedState 的调用,然后显示在UI上。
UI的基本布局如下:
具体封装实现代码如下:
public partialclass ConnectQualityView
{
#region "Declarations"
string ConnectionQualityString ="Off";
[DllImport("wininet.dll", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
privatestaticexternbool InternetGetConnectedState(refint lpSFlags, int dwReserved);
publicenumInetConnState
{
modem = 0x1,
lan = 0x2,
proxy = 0x4,
ras = 0x10,
offline = 0x20,
configured = 0x40
}
#endregion
#region "Control Methods"
privatevoid ConnectQualityView_Load(object sender, System.EventArgs e)
{
Timer1.Enabled = true;
this.DoubleBuffered =true;
}
privatevoid Timer1_Tick(System.Object sender, System.EventArgs e)
{
lblConnectStatus.Refresh();
bool blnState;
blnState = CheckInetConnection();
}
publicbool CheckInetConnection()
{
long lngFlags;
int temp_int = (int) lngFlags;
if (InternetGetConnectedState(ref temp_int, 0))
{
// True
if (System.Convert.ToBoolean(lngFlags) && System.Convert.ToBoolean(InetConnState.lan))
{
switch (ConnectionQualityString)
{
case"Good":
lblConnectStatus.ForeColor =Color.Green;
lblConnectStatus.Text ="Connection Quality: Good";
ConnectionQualityString ="Good";
break;
case"Intermittent":
lblConnectStatus.ForeColor =Color.Green;
lblConnectStatus.Text ="Connection Quality: Good";
ConnectionQualityString ="Good";
break;
case"Off":
lblConnectStatus.ForeColor =Color.DarkOrange;
lblConnectStatus.Text ="Connection Quality: Intermittent";
ConnectionQualityString ="Intermittent";
break;
}
this.Refresh();
}
elseif (System.Convert.ToInt64(System.Convert.ToBoolean(lngFlags )) & (long)
InetConnState.modem)
{
switch (ConnectionQualityString)
{
case"Good":
lblConnectStatus.ForeColor =Color.Green;
lblConnectStatus.Text ="Connection Quality: Good";
ConnectionQualityString ="Good";
break;
case"Intermittent":
lblConnectStatus.ForeColor =Color.Green;
lblConnectStatus.Text ="Connection Quality: Good";
ConnectionQualityString ="Good";
break;
case"Off":
lblConnectStatus.ForeColor =Color.DarkOrange;
lblConnectStatus.Text ="Connection Quality: Intermittent";
ConnectionQualityString ="Intermittent";
break;
}
}
elseif (System.Convert.ToInt64(System.Convert.ToBoolean(lngFlags )) & (long)
InetConnState.configured)
{
switch (ConnectionQualityString)
{
case"Good":
lblConnectStatus.ForeColor =Color.Green;
lblConnectStatus.Text ="Connection Quality: Good";
ConnectionQualityString ="Good";
break;
case"Intermittent":
lblConnectStatus.ForeColor =Color.Green;
lblConnectStatus.Text ="Connection Quality: Good";
ConnectionQualityString ="Good";
break;
case"Off":
lblConnectStatus.ForeColor =Color.DarkOrange;
lblConnectStatus.Text ="Connection Quality: Intermittent";
ConnectionQualityString ="Intermittent";
break;
}
}
elseif (System.Convert.ToInt64(System.Convert.ToBoolean(lngFlags )) & (long) InetConnState.proxy)
{
switch (ConnectionQualityString)
{
case"Good":
lblConnectStatus.ForeColor =Color.Green;
lblConnectStatus.Text ="Connection Quality: Good";
ConnectionQualityString ="Good";
break;
case"Intermittent":
lblConnectStatus.ForeColor =Color.Green;
lblConnectStatus.Text ="Connection Quality: Good";
ConnectionQualityString ="Good";
break;
case"Off":
lblConnectStatus.ForeColor =Color.DarkOrange;
lblConnectStatus.Text ="Connection Quality: Intermittent";
ConnectionQualityString ="Intermittent";
break;
}
}
elseif (System.Convert.ToInt64(System.Convert.ToBoolean(lngFlags)) & (long) InetConnState.ras)
{
switch (ConnectionQualityString)
{
case"Good":
lblConnectStatus.ForeColor =Color.Green;
lblConnectStatus.Text ="Connection Quality: Good";
ConnectionQualityString ="Good";
break;
case"Intermittent":
lblConnectStatus.ForeColor =Color.Green;
lblConnectStatus.Text ="Connection Quality: Good";
ConnectionQualityString ="Good";
break;
case"Off":
lblConnectStatus.ForeColor =Color.DarkOrange;
lblConnectStatus.Text ="Connection Quality: Intermittent";
ConnectionQualityString ="Intermittent";
break;
}
}
elseif (System.Convert.ToInt64(System.Convert.ToBoolean(lngFlags )) & (long) InetConnState.offline)
{
switch (ConnectionQualityString)
{
case"Good":
lblConnectStatus.ForeColor =Color.Green;
lblConnectStatus.Text ="Connection Quality: Good";
ConnectionQualityString ="Good";
break;
case"Intermittent":
lblConnectStatus.ForeColor =Color.Green;
lblConnectStatus.Text ="Connection Quality: Good";
ConnectionQualityString ="Good";
break;
case"Off":
lblConnectStatus.ForeColor =Color.DarkOrange;
lblConnectStatus.Text ="Connection Quality: Intermittent";
ConnectionQualityString ="Intermittent";
break;
}
}
}
else
{
// False
switch (ConnectionQualityString)
{
case"Good":
lblConnectStatus.ForeColor =Color.DarkOrange;
lblConnectStatus.Text ="Connection Quality: Intermittent";
ConnectionQualityString ="Intermittent";
break;
case"Intermittent":
lblConnectStatus.ForeColor =Color.Red;
lblConnectStatus.Text ="Connection Quality: Off";
ConnectionQualityString ="Off";
break;
case"Off":
lblConnectStatus.ForeColor =Color.Red;
lblConnectStatus.Text ="Connection Quality: Off";
ConnectionQualityString ="Off";
break;
}
}
}
#endregion
}
- 获取Windows网络连接状况
- 检查网络连接状况
- 查看网络连接状况
- 网络连接状况 ping telnet
- Unity判断网络连接状况
- Ping测试网络连接状况
- windows下获取进程网络链接状况(包括打开的侦听端口号)
- c#使用winnet检测网络连接状况 .
- Reachability实时检测网络连接状况
- 使用java检测网络连接状况
- android 通过广播监听网络连接状况
- 获取 ios 系统网络状况、电量
- 获取 ios 系统网络状况、电量
- windows下监控本机网络状况
- IOS使用Reachability实时检测网络连接状况
- Android中检测网络连接状况的方法
- IOS使用Reachability实时检测网络连接状况
- IOS使用Reachability实时检测网络连接状况
- QString
- Linux中脚本文件的自动执行
- void main与int main之间的区别
- linux查看内存
- How to host WordPress for free on AWS
- 获取Windows网络连接状况
- php mysql 数据库链接与操作
- 多线程与多进程
- MYSQL 优化innodb_flush_log_at_trx_commit
- 理解 Flex itemRenderer - 第 1 部分: 内联渲染器
- IM开发【1】 - Smack类库详细介绍 - 基于XMPP的即时通讯机制
- slf4j和log4j配置
- 教你如何迅速秒杀掉:99%的海量数据处理面试题
- linux下system函数介绍