zoukankan      html  css  js  c++  java
  • 朋友要的 VB读取优盘物理序列号

     以前的有一个别人写的这个代码,也是使用WMI的,不过效率好像高一些。今天看到朋友要,想找来着。结果没有找到。只好重新自己写了一个,效率有点低,没以前那个好,回头再慢慢找找看看是不是存别的地方了。


    Public Function GetUDiskID() As String
        
    '**********************
        '*Function:读取优盘物理序列号
        '*
        '*Author:张旋(zxsoft)
        '**********************
        On Error Resume Next
        
    Dim objWMIService As Object
        
    Dim colDevices As Object
        
    Dim objdevice As Object
        
    Dim UDiskID As String
        
    Dim isUDisk As Boolean
        
    Dim objUsbDevice As Object
        
    Dim colUSBDevices As Object
        isUDisk 
    = False
        
    Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
        
    Set colDevices = objWMIService.ExecQuery _
            (
    "Select * From Win32_USBControllerDevice")
        
    Dim ret
        
    For Each objdevice In colDevices
            
    Set colUSBDevices = objWMIService.ExecQuery _
                (
    "Select * From Win32_PnPEntity Where DeviceID = '" & Split(Replace(objdevice.Dependent, Chr(34), ""), "=")(1& "'")
            
    For Each objUsbDevice In colUSBDevices
                
    If Left(objUsbDevice.DeviceID, 8= "STORAGE\" Then
                    GetUDiskID 
    = UDiskID
                    
    Exit Function
                
    End If
                
    If Left(objUsbDevice.DeviceID, 8= "USB\VID_" Then
                    UDiskID 
    = Split(objUsbDevice.DeviceID, "\")(2)
                    
    If InStr(UDiskID, "&"> 0 Then
                        ret 
    = Split(UDiskID, "&")
                        UDiskID 
    = ret(UBound(ret) - 2)
                    
    End If
                
    End If
            
    Next
        
    Next
        GetUDiskID 
    = "U-Disk-Not-Found"
    End Function





    终于找到那个读序列号的代码了!原来放在gmail里啦!帖出来吧! 就是比我写的好呀
    Sub cc()
        
    On Error Resume Next
        
    Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
        
    Set colItems = objWMIService.ExecQuery("Select * From Win32_USBHub")
        
    For Each objItem In colItems
            a 
    = objItem.DeviceID  'U盘识别为:USB\VID_09A6&PID_800\20040418154911-00,故用VID判别
            If a Like "*VID*" Then b = Split(a, "\"): MsgBox b(UBound(b))
            
    '上句亦可:If InStr(a, "VID") Then b = Split(a, "\"): MsgBox b(UBound(b))
        Next
    End Sub
  • 相关阅读:
    C语言volatile
    2017-10-12 下一步计划
    关于步进电机的半流设置、衰减设置
    压力校准仪开发-----步进电机驱动
    kei中实现在线仿真看波形
    42步进电机与57步进电机
    网上的说TB6560存在的问题
    TB6560步进电机驱动板
    继承
    iOS设计模式——单例模式
  • 原文地址:https://www.cnblogs.com/zxsoft/p/867657.html
Copyright © 2011-2022 走看看