我可以用 Delphi 代码控制扬声器图标的状态吗

Posted

技术标签:

【中文标题】我可以用 Delphi 代码控制扬声器图标的状态吗【英文标题】:Can I control the state of the Speaker Icon with Delphi code 【发布时间】:2017-07-03 12:29:39 【问题描述】:

是否可以在 Delphi Code 中控制(启用/禁用)扬声器图标。

这有注册表项吗?

非常感谢...

【问题讨论】:

您是否在问如何全局静音音频 - 这是图标状态所表示的? 该图像中实际上有三个与音频相关的图标。一个在通知区域,两个在弹出窗口。我认为它们中的任何一个都不是你可以修改的。 你问的是如何修改使用的图标,或者如何设置输出音量?该图标将反映音量设置的状态。 所以问题真的是跟图标无关,而是如何在你的应用中取消静音呢? 这里没有问题要解决。如果用户想要使计算机静音,他们会这样做。您不能决定是否要覆盖它。如果他们想听到您的声音,他们可以取消静音。这里没什么可看的。 【参考方案1】:

虽然可以通过更改未记录的注册表值来“隐藏”图标,但用户可以在 tray icon 选项中再次取消隐藏它,因此这并不是真正的永久解决方案。

如果您坚持忽略用户希望将他们的机器静音,您可以通过编程方式取消静音。

在 Windows XP/2003 和更早版本上,您必须使用旧的 mixer API。处理这个 API 并不好玩,您必须记住取消 Wave 和主音量线的静音。请参阅 this 和 this 获取灵感。

Vista 和更高版本有一个新的基于 COM 的 API,处理起来应该不会那么痛苦。创建IMMDeviceEnumerator 的实例并枚举渲染端点(或使用GetDefaultAudioEndpoint)并在设备端点上调用IAudioEndpointVolume::SetMute。 This example 应该非常接近,只需将其转换为 Delphi。每个应用程序也可以控制音量,因此如果您的用户很聪明,您可能也需要处理这个问题。

Larry Ostermans blog 也是有关此新 API 的帮助和详细信息的重要来源。

注意:作为取消静音的一种解决方法,用户只需将音量设置得非常低即可消除您的声音。你真的没有办法知道声音在低音量下是否可以听到并将它设置得更高只是因为你会非常邪恶并且可能真的会伤害到戴着耳机等的人。

【讨论】:

关于弄乱音量的坏处的优秀笔记。 感谢大家的回复。至于“弄乱”音量。没有使用耳机,所有系统都有带有内置扬声器的监视器,声音不是很大。当我必须向所有员工传达消息时,我的应用程序会将音量设置为 50%,以提醒他们该消息及其重要性,以便他们立即做出反应。现在去看看其中的一些链接..再次感谢您的帮助和建议..

以上是关于我可以用 Delphi 代码控制扬声器图标的状态吗的主要内容,如果未能解决你的问题,请参考以下文章

如何控制用Delphi摄像头

delphi 托盘图标 主窗体就隐藏,跳出一个窗体就缩小的

如何用delphi实现扬声器发出一定频率的声音

电脑为啥没有声音怎么处理-4种办法

用Delphi开发一个程序,在服务端(受制端)锁屏状态下控制端如何实现监控和操作?

电脑显示未插入扬声器和耳机?