gzguolei 发表于 2011-5-1 10:43:16

如何判断网卡已禁用?[已解决]

本帖最后由 gzguolei 于 2011-5-5 16:44 编辑

我是个新手,请教如何判断网卡已禁用,如已禁用就启用。谢谢!

飘云 发表于 2011-5-1 13:59:03

本帖最后由 飘云 于 2011-5-1 16:04 编辑

用api函数GetIfEntry来获取网卡信息到MIB_IFROW结构中,然后MIB_IFROW结构中的dwAdminStatus项即网卡状态,1启用,2禁用,最后一项bDescr是描述网卡的,便于用户识别网卡。

大概的写了下,我这段代码的前提是需要用户知道网卡名,当然也可以通过遍历网络连接然后让用户选择


Dim $a=1,$network="Broadcom 802.11g Network Adapter"
$MIB_IFROW = 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")
While 1
        DllStructSetData($MIB_IFROW, "dwIndex", $a);第三个参数是指定想要检测的网卡序号给dwIndex元素
        DllCall("iphlpapi.dll", "dword", "GetIfEntry", "ptr", DllStructGetPtr($MIB_IFROW));调用GetIfEntry将此指定网卡的信息写入数据结构$MIB_IFROW中
        If DllStructGetData($MIB_IFROW,"bDescr")=$network Or $a>200 Then ExitLoop
        $a+=1
WEnd
If $a>200 Then
        MsgBox(0,"","未发现网卡【"&$network&"】")
ElseIf DllStructGetData($MIB_IFROW,"dwAdminStatus")=1 Then
        MsgBox(0,"","网卡【"&$network&"】已启用")
ElseIf DllStructGetData($MIB_IFROW,"dwAdminStatus")=2 Then
        MsgBox(0,"","网卡【"&$network&"】已禁用")
EndIf

58fly 发表于 2011-5-2 08:12:03

留下备用,飘云很给力

gzguolei 发表于 2011-5-3 23:49:30

非常感谢帮助,参照您的方法已解决了.顺便问下,如何改为“已解决”?

guang19831217 发表于 2011-5-4 19:52:15

同学,麻烦请在标题后面加上(已解决)。

学习一下 发表于 2011-6-10 05:02:33

真不错,谢谢

iori2882 发表于 2011-9-26 16:23:38

留下备用 以后学习

zhangchongzhi 发表于 2011-9-26 17:00:09

不知道怎么用,看着有用。收下。

zdpcc 发表于 2012-2-29 19:15:52

多谢,这个有用

ticket 发表于 2012-3-3 09:07:02

会用 到先留下来学习,谢了
页: [1]
查看完整版本: 如何判断网卡已禁用?[已解决]