[英]change volume win32 c++
我将如何在 c++ win32 中更改音量? 另外我将如何静音/取消静音? 谢谢您的帮助!
使用waveOutSetVolume
API。
下面是一个例子:
DWORD dwVolume;
if (waveOutGetVolume(NULL, &dwVolume) == MMSYSERR_NOERROR)
waveOutSetVolume(NULL, 0); // mute volume
// later point in code, to unmute volume...
waveOutSetVolume(NULL, dwVolume);
waveOutSetVolume 和 mixSetControlDetails 仅更改您在 Windows Vista 及更高版本上的应用程序的音量。
如果您想在 Vista 及更高版本上更改主音量,请搜索IAudioEndpointVolume接口。
也许您应该考虑不更改全局音量。 想一想 - 如果我降低 MediaPlayer 中的音量,所有其他程序仍然像以前一样响亮,这正是我对任何程序的期望 - 只降低它自己的音量。 当然,可能有理由改变全局音量,没有冒犯 ;)
两种选择:
您是否考虑过显示音量控件并让用户使用? 如果是这样,我可以为此发布一些代码。 (您基本上只是使用音量控制小程序。
如果您只想更改音量,那么您可以使用虚拟键代码来更改音量,如下所示:
void changeVolume()
{
INPUT ip={0};
ip.type = INPUT_KEYBOARD;
ip.ki.wVk = VK_VOLUME_UP; //or VOLUME_DOWN or MUTE
SendInput(1, &ip, sizeof(INPUT));
ip.ki.dwFlags = KEYEVENTF_KEYUP;
SendInput(1, &ip, sizeof(INPUT));
}
切换静音的最简单方法是
const int APPCOMMAND_VOLUME_MUTE = 0x80000;
SendMessage(this.Handle, WM_APPCOMMAND, IntPtr.Zero, (IntPtr)APPCOMMAND_VOLUME_MUTE);
以类似的方式,您可以触发 +Volume 和 -Volume 键行为。 看看http://www.blackwasp.co.uk/BasicVolumeControl.aspx和http://msdn.microsoft.com/en-us/library/windows/desktop/ms646247%28v=vs.85%29。 aspx
还有一些诸如麦克风音量控制之类的值,但我还没有尝试过。
如果您需要更多地控制系统主音量,则必须检查 Windows 版本并执行 2 个版本的代码:
类似于前面提到的更改Win XP 的主音量级别。
对于 Vista 及更高版本,类似于https://stackoverflow.com/a/3437069/1365066 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.