我将如何改变 c++ win32 中的音量?另外我将如何静音/取消静音?谢谢您的帮助!
5 回答
使用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 和mixerSetControlDetails 仅在Windows Vista 及更高版本上更改应用程序的音量。
如果要更改 Vista 及更高版本的主音量,请搜索IAudioEndpointVolume接口。
这是我几年前写的一篇博客文章。
两种选择:
您是否考虑过显示音量控件并让用户?如果是这样,我可以为此发布一些代码。(你基本上只是掏出音量控制小程序。
如果您只想改变音量,那么您可以使用虚拟键码来改变音量,如下所示:
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 。