Winapi 列出音频输入设备-VBA
我有一个复杂的Access数据库,我需要用它做一些音频录制。我几乎所有的东西都使用外部解决方案工作,但我不得不从Access中选择输入设备Winapi 列出音频输入设备-VBA,winapi,ms-access,vba,audio,Winapi,Ms Access,Vba,Audio,我有一个复杂的Access数据库,我需要用它做一些音频录制。我几乎所有的东西都使用外部解决方案工作,但我不得不从Access中选择输入设备 我所需要的只是从Windows获取一组设备或其他东西,我可以从那里获取。除了输出而不是输入之外,做一些与我正在寻找的接近的事情。我知道没有非常简单的方法来实现这一点,但我知道这是可能的,我只是不知道如何实现。嗯,这不是最简单的问题:-)我认为您确实需要调用本机函数 也许是这样的: VB在底层实现。 祝你好运 嗯,这不是最简单的问题:-)我认为您确实需要调用
我所需要的只是从Windows获取一组设备或其他东西,我可以从那里获取。除了输出而不是输入之外,做一些与我正在寻找的接近的事情。我知道没有非常简单的方法来实现这一点,但我知道这是可能的,我只是不知道如何实现。嗯,这不是最简单的问题:-)我认为您确实需要调用本机函数 也许是这样的: VB在底层实现。
祝你好运 嗯,这不是最简单的问题:-)我认为您确实需要调用本机函数 也许是这样的: VB在底层实现。
祝你好运 链接的代码创建一个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
链接的代码创建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
我不明白为什么这么难!基本上,每一个进行任何类型记录的软件都需要具备选择输入设备的功能。这真的没有什么不同。声明是在VB.Net(VB 9)中吗?它看起来并不比任何Windows API调用更难。您应该感谢您正在使用一个开发平台,该平台可以通过使用Windows API调用来扩展功能。我不知道有哪种类似的数据库开发工具可以做到这一点(真正可以与Access相比的工具只有FileMaker Pro和OpenOffice Base)。我很想听听他们是否可以。我并不害怕Windows API调用,我只是找不到关于它们是什么以及如何使用它们的示例或文档。我不明白为什么这么难!基本上,每一个进行任何类型记录的软件都需要具备选择输入设备的功能。这真的没有什么不同。声明是在VB.Net(VB 9)中吗?它看起来并不比任何Windows API调用更难。您应该感谢您正在使用一个开发平台,该平台可以通过使用Windows API调用来扩展功能。我不知道有哪种类似的数据库开发工具可以做到这一点(真正可以与Access相比的工具只有FileMaker Pro和OpenOffice Base)。我很想听听他们是否可以。我并不害怕Windows API调用,我只是找不到关于它们是什么以及如何使用它们的示例或文档。下面列出了我系统上的声卡。那不是我需要的。我需要的是列出声卡上的物理输入端口,如麦克风、线路输入等。这将列出我系统上的声卡。那不是我需要的。我需要的是列出声卡上的物理输入端口,如麦克风、线路输入等。