2013-02-25 31 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

相關問題