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
+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