waveOutGetDevCaps、Win7 和长设备名称
我正在维护一个旧的代码库,它使用 waveOutGetDevCaps 来获取系统上音频设备的名称。在 Windows 7 计算机上,这会导致名称被截断,因为 WAVEOUTCAPS.szPname 受到 MAXPNAMELEN(31 个字符)的限制。
Win7 的做法是什么?
I'm maintaining an old code base that's using waveOutGetDevCaps to get the names of the audio devices on the system. On Windows 7 machines this results in truncated names, as WAVEOUTCAPS.szPname is limited by MAXPNAMELEN (31 chars).
What's the Win7 way of doing this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用核心音频 API 之一:
上面的代码中删除了错误处理,以使其更具可读性。 (我碰巧喜欢使用 C++/CLI 在 C# 和 Windows API 之间移动。)
现在更困难的部分是将端点名称与旧代码库中的 MME 设备相关联。
You could use one of the Core Audio APIs:
Error handling was removed in the above code to make it more readable. (I happen to love using C++/CLI to move between C# and the Windows APIs.)
Now the harder part will be to relate the endpoint names to the MME devices in your old code base.
我找到了另一种方法,使用注册表查找音频设备的全名,包括输入和输出。
适用于 Windows 7 和 Windows 10。
I have found another way using the registry to find audio devices' full name, both Input and Output.
Works on Windows 7 and Windows 10.