问个关于本地连接状态的问题[已解决]
本帖最后由 飘云 于 2011-4-2 16:58 编辑论坛里搜搜倒是有一些,但都不是我要的
我想要的是获取图中红框中的内容,是物理网线的状态判断
本来以为用sensapi.dll中的IsNetworkAlive函数就可以,但是使用后发现,IsNetworkAlive函数只能识别网络的联通与否,如果网络未连接,就算本地连接显示为已连接也返回0(因为校园内使用的是闪讯上网,本地连接的状态是混乱的,有时显示未连接,有时就显示是已连接,但是网线拔掉肯定显示为网络电缆被拔出)
后来又想用Iphlpapi.dll中的GetIfEntry函数,可以不知道为啥,试验的结果是dwAdminStatus的返回值为0。。。。
请各位大大帮忙了
-----------------------------------------------------
自己搞定了,还是用的GetIfEntry函数,开始是自己相关参数没设置好 Global Const $NETWORK_ALIVE_LAN = 0x1
Global Const $NETWORK_ALIVE_WAN = 0x2
$x =DLLCall("sensapi.dll","int","IsNetworkAlive","str",$NETWORK_ALIVE_LAN)
msgbox (4096,"测试",$x)
; 1 为通,0 为断 本帖最后由 飘云 于 2011-4-2 21:56 编辑
$a = DllStructCreate("wchar wszName;dword dwIndex;dword dwType;dword dwMtu;dword dwSpeed;dword dwPhysAddrLen;char bPhysAddr;dword dwAdminStatus;dword dwOperStatus;dword dwLastChange;dword dwInOctets;dword dwInUcastPkts;dword dwInNUcastPkts;dword dwInDiscards;dword dwInErrors;dword dwInUnknownProtos;dword dwOutOctets;dword dwOutUcastPkts;dword dwOutNUcastPkts;dword dwOutDiscards;dword dwOutErrors;dword dwOutQLen;dword dwDescrLen;char bDescr")
DllStructSetData($a,2,2);这里最后一个值是网卡序号,不知道为啥,我的有线网卡序号是2
DLLCall("iphlpapi.dll","dword","GetIfEntry","ptr",DllStructGetPtr($a))
msgbox (0,"测试",DllStructGetData($a,"bDescr"));通过bDescr来判断是否是目标网卡
;使用元素名dwOperStatus ,5 为通,0 为断
ping 一下不行吗? 不知楼主需要的那一种方式
页:
[1]