2013-02-25 40 views
2

我正在使用一种方法来获取所有usb extern插入pc中。我用vb6写函数,并创建一个dll。现在我想在C++程序中使用dll,但是我有关于getObject()函数的错误。我可以在vb6的dll中使用getObject()吗? 这是函数的代码在一个DLL中使用GetObject()与vb6.0

Public Function GetUsbDeviceList() As String 
    Dim ComputerName As String 
    Dim wmiServices As Object 
    Dim wmiDiskPartitions As Object 
    Dim wmiDiskPartition As Object 
    Dim wmiDiskDrives As Object 
    Dim wmiDiskDrive As Object 
    Dim wmiLogicalDisks As Object 
    Dim wmiLogicalDisk As Object 
    Dim Vol As Object 
    Dim strFound As String 
    Dim Query As String 

    ComputerName = "." 
    Set wmiServices = GetObject("winmgmts:{impersonationLevel=Impersonate}!//" & ComputerName) 

    strFound = "" 
    ' Get physical disk drive 
    Set wmiDiskDrives = wmiServices.ExecQuery("SELECT * FROM Win32_DiskDrive where InterfaceType = 'USB'") 
    For Each wmiDiskDrive In wmiDiskDrives 
     'MsgBox ("Disk drive Caption: " & wmiDiskDrive.Caption & vbNewLine & "DeviceID: " & " (" & wmiDiskDrive.DeviceID & ")") 
     'Use the disk drive device id to find associated partition 
     Query = "ASSOCIATORS OF {Win32_DiskDrive.DeviceID='" & wmiDiskDrive.DeviceID & "'} WHERE AssocClass = Win32_DiskDriveToDiskPartition" 
     Set wmiDiskPartitions = wmiServices.ExecQuery(Query) 

     For Each wmiDiskPartition In wmiDiskPartitions 
      'Use partition device id to find logical disk 
      Set wmiLogicalDisks = wmiServices.ExecQuery("ASSOCIATORS OF {Win32_DiskPartition.DeviceID='" & wmiDiskPartition.DeviceID & "'} WHERE AssocClass = Win32_LogicalDiskToPartition") 
      For Each wmiLogicalDisk In wmiLogicalDisks 
       'MsgBox ("Drive letter associated with disk drive = " & wmiDiskDrive.Caption & wmiDiskDrive.DeviceID & vbNewLine & " Partition = " & wmiDiskPartition.DeviceID & vbNewLine & " is " & wmiLogicalDisk.DeviceID) 
       Dim DatiUnita As Scripting.FileSystemObject 
       Set DatiUnita = GetObject(, "Scripting.FileSystemObject") 
       Set Vol = DatiUnita.GetDrive(DatiUnita.GetDriveName(wmiLogicalDisk.DeviceID)) 
       strFound = strFound + wmiLogicalDisk.DeviceID + "," + Vol.volumename + "," + wmiDiskDrive.PNPDeviceID + ";" 
      Next 
     Next 
    Next 

    GetUsbDeviceList = strFound 
End Function 

回答

2

变化

Set DatiUnita = GetObject(, "Scripting.FileSystemObject") 

Set DatiUnita = CreateObject("Scripting.FileSystemObject") 

(或者,您也可以使用

Set DatiUnita = GetObject("", "Scripting.FileSystemObject") 

即一个空字符串,而不是被弄糊涂了th。)

+0

+1。另请参阅['CreateObject'](http://msdn.microsoft.com/zh-cn/library/aa262700(v = vs.60).aspx)和['GetObject'](http:// msdn.microsoft.com/en-us/library/aa445016(v=vs.60).aspx) – MarkJ 2013-02-25 15:37:12

相关问题