【问题标题】:How to tell if a USB is plugged by parsing PID and VID如何通过解析 PID 和 VID 来判断 USB 是否已插入
【发布时间】:2014-01-17 16:36:14
【问题描述】:

首先,我要感谢您抽出时间阅读我的帖子。 我需要一个 Visual basic 或 VBSCript 代码来检测是否插入了特定的 USB。 我有这些信息:

VID_0DF7 PID_0620

我的代码不想工作 :( 我不知道如何让它只读取特定的 VID 和 Pid :( 请不要仅仅因为我不知道该怎么做而对我的帖子竖起大拇指。 我在互联网上找到了很多例子,但实际上是为了告诉所有插入设备的 PID 和 VID 是什么......所以......我不需要它们......

我的代码:

strComputer = "."

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colDevices = objWMIService.ExecQuery _
    ("Select * From Win32_USBControllerDevice")

For Each objDevice in colDevices
    strDeviceName = objDevice.Dependent
    strQuotes = Chr(34)
    strDeviceName = Replace(strDeviceName, strQuotes, "")
    arrDeviceNames = Split(strDeviceName, "=")
    strDeviceName = arrDeviceNames(1)
    Set colUSBDevices = objWMIService.ExecQuery _
        ("Select * From Win32_PnPEntity Where DeviceID = '" & strDeviceName & "'")
    For Each objUSBDevice in colUSBDevices
        Wscript.Echo objUSBDevice.Description
    Next    
Next

谢谢!

【问题讨论】:

    标签: vbscript usb detect


    【解决方案1】:

    这样的事情应该可以工作:

    Set wmi = GetObject("winmgmts://./root/cimv2")
    
    vid = "VID_0DF7"
    pid = "PID_0620"
    
    For Each d In wmi.ExecQuery("SELECT * FROM Win32_USBControllerDevice")
      If InStr(d.Dependent, vid & "&" & pid) > 0 Then
        WScript.Echo wmi.Get(d.Dependent).Description
      End If
    Next
    

    如果您希望在没有设备符合您的条件时收到通知,则不能在循环内实现 Else 分支。嵌套的Else 将为每个不符合条件的设备触发,而只有在没有设备符合条件时才需要通知。使用布尔值,当您找到匹配的设备时将其更改为 True

    found = False
    For Each d In wmi.ExecQuery("SELECT * FROM Win32_USBControllerDevice")
      If InStr(d.Dependent, vid & "&" & pid) > 0 Then
        WScript.Echo wmi.Get(d.Dependent).Description
        found = True
      End If
    Next
    
    If Not found Then WScript.Echo "USB not found."

    【讨论】:

    • 我能说什么?你是个天才!谢谢!!!还有一个问题,我怎样才能用其他方法做到这一点? (如果存在,请说“usb not found”?:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-12
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 2012-01-08
    相关资源
    最近更新 更多