我可以用Delphi代码控制Speaker Icon的状态

时间:2017-07-03 12:29:39

标签: windows delphi winapi audio icons

System Tray Speaker Icon

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

是否有注册表项?

非常感谢...

1 个答案:

答案 0 :(得分:2)

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

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

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

Vista及更高版本有一个新的基于COM的API,应该不那么痛苦。创建IMMDeviceEnumerator的实例并枚举渲染端点(或使用GetDefaultAudioEndpoint)并在设备端点上调用IAudioEndpointVolume::SetMuteThis example应该非常接近,只需将其翻译成Delphi即可。每个应用程序也可以控制卷,因此如果您的用户很聪明,您可能还需要处理它。

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

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