我有一些复杂的Access数据库,我需要进行一些录音。我几乎所有人都使用外部解决方案,但我被迫从Access中选择我的输入设备。
我需要的是从Windows获取设备或东西的一些方法,我可以从那里获取它。 http://www.vbmonster.com/Uwe/Forum.aspx/vb/32848/listing-all-audio-devices做了一些接近我正在寻找的东西,除了那是输出而不是输入。我知道没有非常简单的方法来实现这一目标,但我知道这是可能的,我似乎无法找到如何。
答案 0 :(得分:1)
您链接的代码会创建一个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
答案 1 :(得分:0)
嗯,不是最简单的问题:-)我认为你确实需要调用原生函数。
Maby是这样的:
http://msdn.microsoft.com/en-us/library/ms645598(v=vs.85).aspx
VB底层实现。 祝你好运!