注册 登录
编程论坛 VB6论坛

又一个 Active部件不能创建对象

xingming022 发布于 2015-12-02 14:26, 1072 次点击
程序代码:
Private Sub Command1_Click()
Dim aa As String

Dim strLocalIP As String
Dim winIP As Object
Dim cpuSet As SWbemObjectSet
Dim cpu As SWbemObject
Set winIP = CreateObject("MSWinsock.Winsock")
strLocalIP = winIP.localip
aa = strLocalIP
Set cpuSet = GetObject("winmgmts:{impersonationLevel=impersonate}").InstancesOf("Win32_Processor")
For Each cpu In cpuSet
    aa = aa & cpu.ProcessorId  'aa = aa & "A" & cpu.ProcessorId
    Open App.Path & "\duquip2.txt" For Output As #1  'Output Append
        Write #1, cpu.ProcessorId
    Close #1
Next


Open App.Path & "\1.txt" For Output As #1  'Output Append
    Write #1, aa
Close #1
MsgBox "生成完毕"
End Sub
6 回复
#2
xingming0222015-12-02 14:34
百度说的那些方法我基本全部都试过了,都不管用。
#3
风吹过b2015-12-02 14:44
找到一个,测试可用。

http://zhidao.baidu.com/link?url=0R3RYW8nxBcEPBuc8mlttBzI4duvkfdt5I_Ouo7Bm9bn24siqxA3yG5DbXNpYJQ7qMgAZoQg93F3KxZRx8apnK
程序代码:

Option Explicit

Private Sub GetMyIP()
Dim strComputer As String
Dim objWMI As Object
Dim colIP As Object
Dim IP As Object
Dim I As Integer
strComputer = "."
Set objWMI = GetObject("winmgmts://" & strComputer & "/root/cimv2")
Set colIP = objWMI.ExecQuery("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
For Each IP In colIP
If Not IsNull(IP.IPAddress) Then
For I = LBound(IP.IPAddress) To UBound(IP.IPAddress)
MsgBox "IP 地址:" & IP.IPAddress(I) & Chr(10) & "网卡类型:" & IP.Description(I) & Chr(10) & "网卡地址:" & IP.Macaddress(I)
Next
End If
Next
End Sub

Private Sub Command1_Click() '调用
GetMyIP
End Sub

#4
xingming0222015-12-02 16:30
回复 3楼 风吹过b
版主你好,感谢您的回复,我还需要读取CPU序列号,另外像我的代码的那种情况是无解了 么 啊?
#5
风吹过b2015-12-02 17:08
找到一个。http://bbs.,12楼。
Public Function GetCpu() As String
   On Error Resume Next
   Dim TmpCode$
   Dim ObjWMIService As Object, objItem As Object, colItems As Object
   Set ObjWMIService = GetObject("winmgmts:\\.\root\cimv2")
   Set colItems = ObjWMIService.ExecQuery("Select * from Win32_Processor", , 48)
   For Each objItem In colItems
      TmpCode = TmpCode & " " & objItem.ProcessorId
   Next
   GetCpu = Trim(TmpCode)
End Function

#6
风吹过b2015-12-02 17:09
回复 4楼 xingming022
因为引用了外部对象,所以 在某些电脑上可以用,在某些电脑上就会出错。这是肯定的。

使用 WMI ,也存在这种情况,有些电脑上没开这个服务,但机率很少而以。
#7
xingming0222015-12-04 14:07
回复 6楼 风吹过b
谢谢您~
1