Список устройств ввода звука - VBA - PullRequest
1 голос
/ 31 марта 2011

У меня есть немного сложной базы данных Access, с которой мне нужно сделать аудиозапись.У меня почти все работает с использованием сторонних решений, но я вынужден выбрать свое устройство ввода из Access.

Все, что мне нужно, это какой-то способ получить набор устройств или что-то из Windows, и я могу взять его изтам.http://www.vbmonster.com/Uwe/Forum.aspx/vb/32848/listing-all-audio-devices делает что-то близкое к тому, что я ищу, за исключением того, что это выход вместо ввода.Я знаю, что не будет никакого чрезвычайно простого способа достигнуть этого, но я знаю, что это возможно, я просто не могу найти, как это сделать.

Ответы [ 2 ]

1 голос
/ 31 марта 2011

Код, который вы связали, создает 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
0 голосов
/ 31 марта 2011

Хм, не самый простой вопрос :-) Я думаю, вам действительно нужно вызвать нативную функцию.

Maby что-то вроде этого:

http://msdn.microsoft.com/en-us/library/ms645598(v=vs.85).aspx

VBреализация в нижней части.Удачи!

...