【问题标题】:How can I find the default audio device in Visual Basic .NET?如何在 Visual Basic .NET 中找到默认音频设备?
【发布时间】:2012-03-19 13:33:33
【问题描述】:

这需要能够在最后两个或三个 Windows 版本(7、Vista 和可能的 XP)上工作。在 Visual Basic .NET 中,如何找到默认音频设备(我正在寻找扬声器和其他东西,而不是麦克风)。谢谢!

编辑:伙计们,我真的走进了陌生的领域。似乎每次我尝试使用代码示例时,都会出现无法更神秘的构建错误,并且涉及库内部发生的错误以及各种类似的东西。有什么适合初学者学习如何做到这一点的吗?谢谢!

【问题讨论】:

  • 你试过什么?尝试阅读这个问题:stackoverflow.com/questions/1809190/…
  • 我一直在尝试几乎完全一样的东西,但是对它的任何引用都有些模糊,所以我无法应用它。

标签: .net windows audio


【解决方案1】:

Windows 中有一些音频 API,它们都提供设备枚举。最近的“主要”API 仅适用于 Vista+,因此您需要确定 XP 支持是否重要。

Vista+ 枚举:Enumerating Audio Devices

适用于所有 Windows 版本的代码:Sample: how to enumerate waveIn and waveOut devices on your system

这些是上面的 C++ 代码链接,在 VB.NET 中,您将需要 P/Invoke 调用或包装库,例如 NAudio 来处理内部细节。

【讨论】:

  • 我不断收到链接器错误,例如:错误 1 ​​错误 LNK2019:未解析的外部符号 __imp__waveOutGetDevCapsW@12 在函数 _wmain f.obj 中引用
  • 你不会在每一个简单的 C++ 东西上绊倒。为什么不检查基于NAudio 库的.NET 代码呢?如此接近您的问题:stackoverflow.com/questions/1449136/…
  • 感谢您昨天对所有事情的帮助,Roman。我不得不尝试对注册表做一些在 Windows 中显然不可能的事情,并将其与我基本上没有直接针对 Windows 进行编程的事实相结合,而且我真的不确定自己在做什么.谢谢,伙计。
【解决方案2】:

某些音频 API(winMM、DirectSound、DirectShow、Media Foundation、WASAPI)允许您枚举设备,但提供默认值;有些(Beep、PlaySound)只允许通过默认设备播放。

最简单的 API 是 PlaySound(嗯,除了 Beep,但它的用处有限。)你想玩什么?这将有助于确定要使用的 API 的选择。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多