gpt4 book ai didi

winapi - 如何指定用于 mciSendString API 的声卡

转载 作者:行者123 更新时间:2023-12-02 22:24:32 25 4
gpt4 key购买 nike

我正在更新一个旧的 VB6 应用程序。过去,我围绕 mciSendString 命令编写了一个包装器,以便能够录制和播放音频。那时,计算机通常只有一个声卡。

现在,许多客户拥有多个声卡(通常是一个内置一个和一个 USB 耳机)。

我似乎找不到 API 来指定要与 mciSendString 一起使用的声卡。有人可以指出我正确的方向吗?

最佳答案

请在此处使用源代码(Ergebnisse des Wettbewerbs/German)查看几个解决方案:
http://www.activevb.de/rubriken/wettbewerbe/2009_september/comp_2009_september_mp3_player.html

这是我项目的一些来源

''' <summary>
''' Return all audio devices by names
''' </summary>
Private Function ListSoundDevices(ByRef LDev As List(Of String)) As Boolean

Dim intItem As New Integer
Dim intNext As New Integer
Dim intCount As New Integer
Dim tWIC As New WaveInCaps
Dim Enc As System.Text.ASCIIEncoding = New System.Text.ASCIIEncoding()
Dim res As Boolean = False

Try
'Throw New Exception("test")
intCount = waveInGetNumDevs()
Catch ex As Exception
'no devices found
Return False
End Try

If intCount <> 0 Then
For intItem = 0 To intCount - 1
If waveInGetDevCaps(intItem, tWIC, Marshal.SizeOf(tWIC)) = MMSYSERR_NOERROR Then
If (tWIC.Formats And WAVE_FORMAT_4S16) = WAVE_FORMAT_4S16 Then
If LDev Is Nothing Then LDev = New List(Of String)
Dim B() As Byte = System.Text.Encoding.Default.GetBytes(tWIC.ProductName.ToString.ToCharArray)
LDev.Add(Enc.GetString(B, 0, B.Length))
intNext += 1
End If
End If
Next

If intNext > 0 Then res = True
End If

Return res
End Function

使用设备ID开始记录和使用。
希望有帮助

关于winapi - 如何指定用于 mciSendString API 的声卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6235179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com