您鏈接的代碼創建一個SWbemObjectSet,然後列出其成員(聲音設備)的屬性。從我所知道的,你想要那個對象,但不想列出屬性(「輸出」)。
如果這是正確的,創建一個函數刪除輸出語句,並返回SWbemObjectSet對象。
Public Function getSoundDevices(Optional strComputer As String = ".") As Object
Const cstrQuery As String = "Select * from Win32_SoundDevice"
Dim objWMIService As Object 'TypeName = SWbemServicesEx '
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set getSoundDevices = objWMIService.ExecQuery(cstrQuery, , 48)
Set objWMIService = Nothing
End Function
然後調用函數使用SWbemObjectSet輸入您的其他代碼。
Public Sub test_getSoundDevices()
Dim objSoundDevices As Object 'TypeName = SWbemObjectSet '
Dim objDevice As Object 'TypeName = SWbemObjectEx '
Set objSoundDevices = getSoundDevices()
For Each objDevice In objSoundDevices
'* do what you want for each sound device here *'
Debug.Print "ProductName: " & objDevice.ProductName
Next objDevice
Set objDevice = Nothing
Set objSoundDevices = Nothing
End Sub
我想不通爲什麼這麼難!基本上,每一種做任何記錄的軟件都需要具有選擇輸入設備的功能。這確實沒有什麼不同。 – Icode4food 2011-03-31 11:58:49
是VB.Net(VB 9)中的聲明嗎? – Oneide 2011-03-31 12:39:06
它看起來不比任何Windows API調用困難。您應該感謝您使用開發平臺,通過使用Windows API調用來擴展功能。我不知道任何可比較的數據庫開發工具都可以做到這一點(與Access完全可比的唯一工具是FileMaker Pro和OpenOffice Base)。我有興趣聽到他們是否可以。 – 2011-04-02 02:17:27