【问题标题】:C# How to programatically change the playback deviceC#如何以编程方式更改播放设备
【发布时间】:2010-12-06 00:35:03
【问题描述】:

如何以编程方式更改 vista / win 7 系统上的默认音频设备?使用 C# 或 Win API 调用?

【问题讨论】:

  • 这基本上是stackoverflow.com/questions/1334076/…的副本,除了输入和输出设备,无论哪种方式,Vista+上都没有API,除非你想反编译媒体中心并找到未记录的东西

标签: c# windows-7 audio playback


【解决方案1】:

WinMM API 应该提供您请求的功能。

您将使用 DRVM_MAPPER_PREFERRED_SET 消息,该消息通过 waveOutMessage() 函数发送。

文档:http://msdn.microsoft.com/en-us/library/aa909789.aspx

但是,如果您尝试自己发送波形声音,则应查看 WinMM.Net 库。

http://winmm.codeplex.com

【讨论】:

  • 我需要做的就是更改 Windows 上的声音设备,以便所有音频都通过该设备。本质上我的系统上有很多声音设备,我想替换默认的系统托盘应用程序,这样我就不需要右键单击,每次需要切换设备时打开设备管理器。这个 API 会这样做吗?
  • 是的,您可以使用 DRVM_MAPPER_PREFERRED_SET 消息设置 XP 中的默认音频播放设备,该消息由 waveOutMessage() 发送。这在 Vista 中不起作用。我正在研究。
  • 谢谢,我认为这最后一个链接会起作用,它应该移植到 win 7 希望!
  • 喜欢最后一个链接!每次我想从耳机切换到扬声器时,Win7 都必须启动播放设备对话框,反之亦然。现在容易多了。谢谢!
  • @Ecyrb 你是怎么做到的? WinMM.net 似乎没有 waveOutMessage 功能。事实上,waveOutMessage 的本地库导入被 #if false 预处理器指令包围。
猜你喜欢
  • 2011-05-06
  • 1970-01-01
  • 2023-04-11
  • 1970-01-01
  • 1970-01-01
  • 2014-03-14
  • 2020-10-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多