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
  • 相关阅读:
    Angular 一个简单的指令实现 阻止事件扩散
    怎样group by一列 select多列
    Angular Viewchild undefined
    TypeScript扩展类方法
    vmware station-ubuntu18.04 共享剪贴板
    基于R统计软件的三次样条和平滑样条模型数据拟合及预测
    R语言析因设计分析:线性模型中的对比
    R语言逻辑回归、方差分析 、伪R平方分析
    R语言多重比较方法
    R语言逐步多元回归模型分析长鼻鱼密度影响因素
  • 原文地址:https://www.cnblogs.com/zxsoft/p/867657.html
Copyright © 2011-2022 走看看