当前位置:编程学习 > VB >>

VB 获取网卡IP成功,但是输出两组相同IP

我写了个程序获取IP和修改该IP,虽然成功,但是有的电脑正常,有的电脑不正常,个别电脑输出当前IP,GATEWAY,DNS等全部输出两次。
正常的是这样输出的:
IP:192.168.1.119
子网:255.255.255.0
。。。。。
不正常的这样出现:
IP:192.168.1.119 192.168.1.119
子网:255.255.255.0 255.255.255.0
。。。。。

下面是我写的代码:

Public Function nowip()
  Dim str, str1, str2, str3, str4, strComputer, colAdapters, i
  strComputer = "."
  Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
  Set colAdapters = objWMIService.ExecQuery("SELECT   *  FROM   Win32_NetworkAdapterConfiguration   WHERE  Description='" & Combo1.Text & "'")
  n = 1
    
  For Each objAdapter In colAdapters
    
        If Not IsNull(objAdapter.IPAddress) Then
              For i = 0 To UBound(objAdapter.IPAddress)
                    Label5.Caption = Label5.Caption & objAdapter.IPAddress(i)
              Next
        End If
        If Not IsNull(objAdapter.IPSubnet) Then
              For i = 0 To UBound(objAdapter.IPSubnet)
                  Label6.Caption = Label6.Caption & objAdapter.IPSubnet(i)
              Next
        End If
        If Not IsNull(objAdapter.DefaultIPGateway) Then
              For i = 0 To UBound(objAdapter.DefaultIPGateway)
                    Label7.Caption = Label7.Caption & objAdapter.DefaultIPGateway(i)
              Next
        End If
            Label8.Caption = Label8.Caption
        If Not IsNull(objAdapter.DNSServerSearchOrder) Then
              For i = 0 To UBound(objAdapter.DNSServerSearchOrder)
                    Label8.Caption = Label8.Caption & " " & objAdapter.DNSServerSearchOrder(i)
              Next
        End If
  Next
End Function

请高手解答,谢谢 --------------------编程问答-------------------- For i = 0 To UBound(objAdapter.IPAddress)
  Label5.Caption = Label5.Caption & objAdapter.IPAddress(i)
Next

个人觉得这样的循环没有必要。 --------------------编程问答-------------------- 或者说有的型号的网卡,或者有的网络设置,可以指定备用ip,备用dns,备用gateway --------------------编程问答--------------------
引用 1 楼 caozhy 的回复:
For i = 0 To UBound(objAdapter.IPAddress)
  Label5.Caption = Label5.Caption & objAdapter.IPAddress(i)
Next

个人觉得这样的循环没有必要。


老大说清楚啊,我不懂,难道是这句出的问题? --------------------编程问答-------------------- 循环多了一次吧 --------------------编程问答-------------------- 有问题的机能调试么?如果能下断点跑进去看看,如果那机不能装vb,就写一个简单的程序把所有NetworkAdapter的能打印出来的那堆属性都打出来比较看看是什么问题。
另外,为什么要用Description来判断?试试用caption,如果允许用MACAddress那就更好。 --------------------编程问答--------------------
引用 4 楼 jinzhuduan 的回复:
循环多了一次吧


我试过了,去掉循环,效果一样. --------------------编程问答--------------------
引用 5 楼 lsftest 的回复:
有问题的机能调试么?如果能下断点跑进去看看,如果那机不能装vb,就写一个简单的程序把所有NetworkAdapter的能打印出来的那堆属性都打出来比较看看是什么问题。
另外,为什么要用Description来判断?试试用caption,如果允许用MACAddress那就更好。


用CAPTION不行啊,试过的。
用MACADDRESS怎么判断我选了哪个网卡啊?,ComboBOX里面是列出的网卡名字,把MAC读出来不是更麻烦,步骤多了很多
补充:VB ,  网络编程
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,