为了账号安全,请及时绑定邮箱和手机立即绑定

VolumeMixer 名称策略

VolumeMixer 名称策略

C#
慕森王 2021-10-24 16:52:12
使用 WASAPI 后,我无法理解使用 sndvol32(音量混合器)显示进程名称的策略是什么。显然“0” processId 是系统声音然后,我可以获得一些提示: - 如果您在 AudioSession 中设置 DisplayName,它将使用显示名称。- 如果不是,则使用窗口名称或 exe 的 FileDescription 字段。我无法理解如何选择使用窗口名称或文件描述。例如,对于 Steam,即使 Steam 窗口打开(主窗口标题为“Steam”),它也会使用“Steam 客户端引导程序”。对于 Spotify 总是使用 MainWindow Title 字段。还有一些其他问题,例如:系统应用程序(如屏幕键盘)何时使用清单文件中设置的名称。是乱七八糟的,太不协调了。有谁更准确地知道它是怎么做的?有关更多信息,我在 c# 中为所有 COM 接口系列使用我自己的自定义包装器(类似于 NAudio 和其他人,但我不想自己构建它来学习)
查看完整描述

1 回答

?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

最后我会得到一个满意的答案。

SndVol32.exe (VolumeMixer) 有点乱。基本工作是:

  1. - 如果在组的随机选择会话中设置 DisplayName(相同分组参数),则选择并显示 DisplayName。

  2. - 如果没有,它会显示主窗口标题并正在监听更改(有问题)。

  3. - 如果没有窗口 (HWnd=0x0),则显示进程的 MainModule 文件的 ProductName。

还有一件事!

这不适用于 UWP 应用。对于 UWP Apps sndvol 实现读取 Appxmanifest.xml 的“DisplayName”,即使是资源引用(示例<DisplayName>ms-resource:......</DisplayName>

还有一件事!

SndVol32 侦听 MainWindowTitle 更改(wineventhooks?winhooks?没关系)但不侦听最小化到托盘或从托盘事件重新规范化的窗口(示例):

  • 如果您在 Spotify 打开的情况下打开 VolumeMixer 窗口,它将显示歌曲的名称(主窗口标题)。

  • 如果您关闭托盘,它将显示上一首播放的歌曲的名称,但在您再次打开窗口之前不会再次更改

  • 如果您从托盘停止播放,它将仅显示“Spotify”(产品名称)。


查看完整回答
反对 回复 2021-10-24
  • 1 回答
  • 0 关注
  • 150 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信