delphi – 如何静音我的应用程序的声音?
我有一个有声音的应用程序.我有一个全球属性来静音.问题是,有很多不同的东西可以发出声音,我讨厌迭代不同的类类型并静音/取消静音.相反,我正在寻找一种在全局应用程序级别上静音的方法.我的意思并不是要将整个系统音量静音.
一种情况:在Windows 7中,您可以打开音量混合器并调整各个应用程序的音量.虽然我不打算更改这个实际的特定值(因为我知道它是特定于Windows 7的),但我想一次性更改应用程序中所有内容的数量.我还需要能够完全静音应用程序中所有内容的声音.我需要这种能力与Windows XP及更高版本兼容.我假设它将涉及Windows API调用,但我不知道要调用什么. 解决方法
在XP上你不可能要求的是什么;操作系统根本不支持每个应用程序的卷级别.
你可以通过创建一个类似于SoundActive的设置类来完成你想要的东西:布尔或PlaySounds:布尔或类似的东西.将它放在它自己的单元中,并有一个创建它的实例的初始化部分和一个释放它的终结部分(使其有效地成为全局值的集合). 需要访问这些设置的每个单元只使用包含它们的单元,并相应地调整行为.因此,您的每个子类或表格或其他任何需要检查的内容都会添加: if CurrentSettings.PlaySounds then // Code that makes sounds,plays music,whatever. 设置类还可以包含跟踪当前音量级别的方法(在XP上,系统范围级别),以及使用MMSystem音量功能增加或减少音量的方法(此处有大量示例,通过Google进行操作)所以).然后,您的应用可以使用OnActivate和OnDeactivate事件在应用获得焦点时设置音量级别,并在应用失去焦点时将其恢复到正确的音量. 在Vista及更高版本中,您可以使用我前面提到的 对于单个应用程序,使用 从概念上讲,可以在运行时确定您正在使用的操作系统,以及在XP和更早版本上使用MMSystem功能以及Vista和更高版本上的MMDevAPI功能之间以编程方式切换.但是,期待有人在这里提供这样做的代码有点不合理.我提供的链接应该让你开始走上正确的轨道,当你遇到障碍时,通过这些障碍的具体帮助将是很好的问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |