如何在 Visual Basic .NET 中找到默认音频设备?

Posted

技术标签:

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

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

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

【问题讨论】:

你试过什么?尝试阅读这个问题:***.com/questions/1809190/… 我一直在尝试几乎完全一样的东西,但是对它的任何引用都有些模糊,所以我无法应用它。 【参考方案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 代码呢?如此接近您的问题:***.com/questions/1449136/… 感谢您昨天对所有事情的帮助,Roman。我不得不尝试对注册表做一些在 Windows 中显然不可能的事情,并将其与我基本上没有直接针对 Windows 进行编程的事实相结合,而且我真的不确定自己在做什么.谢谢,伙计。【参考方案2】:

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

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

【讨论】:

以上是关于如何在 Visual Basic .NET 中找到默认音频设备?的主要内容,如果未能解决你的问题,请参考以下文章

如何从原始 URL Visual Basic .NET 中获取重定向的 URL

如何使用 visual basic.net express edition 安装 Windows 服务?

在Visual Basic.NET(VB.NET)中开发的ASP.NET Core应用程序,可以吗? VS

Visual Basic 6.0/8.0/9.0 编程需要哪些软件工具?

在 Visual Basic .NET 中提取 Zip 文件

如何在 Visual Basic 2010 中使用 sqlite db?