首页
社区
课程
招聘
[求助]win7系统下的网络状态判断
发表于: 2015-7-8 11:19 5127

[求助]win7系统下的网络状态判断

2015-7-8 11:19
5127
win7系统的系统托盘中,有一个网络图标,显示当前的网络状态,
有三种状态,见附件中的图。
求问:系统这是调用了哪些函数来判断当前网络状态是在线或不在线?
因为我想自己编程实现,在程序中判断能否连接Internet。
或者,我怎样才能截获系统的网络状态,让我的程序知道现在系统能否连接Internet?
谢谢!

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 0
支持
分享
最新回复 (12)
雪    币: 5
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
用winpcap通过监测哪个网卡上有数据包就可以判断。
2015-7-8 12:06
0
雪    币: 111
活跃值: (100)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
windows vista 以上的系统  可以使用 COM 组件的 INetworkEvents接口 来获取 网络的状态
2015-7-8 12:53
0
雪    币: 53
活跃值: (528)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
INetworkListManager COM接口。
2015-7-8 17:03
0
雪    币: 94
活跃值: (465)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
那么请问如何能更改这个网络托盘的状态呢?
2015-7-9 08:13
0
雪    币: 37
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
谢谢解答!

2015-7-9 10:56
0
雪    币: 37
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
谢谢解答!
2015-7-9 11:05
0
雪    币: 53
活跃值: (528)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
馊主意:
连接不可用:断开连接
无Internet访问:设置一个不存在的网关地址
有Internet访问:这个就不用我多说了吧。。
2015-7-9 12:02
0
雪    币: 94
活跃值: (465)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
我的意思是希望实现一个效果:就是在不影响主机正常上网的情况下,让这个东西显示为无Internet访问。如果设置一个不存在的网关地址,对方都无法上网了吧
2015-7-10 08:05
0
雪    币: 53
活跃值: (528)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
这样啊,那只能注入explorer.exe, hook接口。
2015-7-12 21:50
0
雪    币: 94
活跃值: (465)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
哦,这样子啊,感谢感谢,您的思路很有价值。请问是HOOK哪个函数呢?
2015-7-13 08:04
0
雪    币: 53
活跃值: (528)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
请看4楼。
2015-7-14 10:08
0
雪    币: 20
活跃值: (74)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
可以通过 GetIfTable2,win7好像只能用GetIfTable
过滤一些设备后剩下的就是可用的传输的网络
以下代码可以查看msdn文档

//过滤和屏蔽非传输网卡

                        if(row.OperStatus == 1 && row.AdminStatus==1 && row.MediaConnectState==1 &&row.DirectionType==0)
                        {
                                if( row.ConnectionType>1)continue;
                                if(row.TunnelType >0)continue;
                                if(row.PhysicalMediumType==0)continue;
                                if( row.InterfaceAndOperStatusFlags.ConnectorPresent == FALSE)continue;

                        }else
                        {
                                continue;
                        }
2015-8-13 15:05
0
游客
登录 | 注册 方可回帖
返回
//