我将如何在c ++ win32中更改音量?另外,我如何将其静音/取消静音?感谢您的帮助!
两个选项:
您是否考虑过显示音量控件并让用户使用?如果是这样,我可以为此发布一些代码。 (您基本上只是将外壳加入了音量控制小程序。
waveOutSetVolume和mixerSetControlDetails仅更改Windows Vista及更高版本上的应用程序的音量。
如果要在Vista和更高版本上更改主音量,请搜索 DWORD dwVolume;
if (waveOutGetVolume(NULL, &dwVolume) == MMSYSERR_NOERROR)
waveOutSetVolume(NULL, 0); // mute volume
// later point in code, to unmute volume...
waveOutSetVolume(NULL, dwVolume);
界面。
IAudioEndpointVolume我几年前写的博客文章。
也许您应该考虑不要更改全局音量。考虑一下-如果我降低MediaPlayer的音量,其他所有程序的声音仍然和以前一样大,而这恰恰是我对任何程序的期望-只能降低它的OWN音量。当然,可能有理由更改全局数量,没有违法;)
如果您只想改变音量,则可以使用虚拟按键代码来改变音量,如下所示:
Here's
切换静音的最简单方法是>
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)); }
以类似的方式,您可以触发+ Volume和-Volume键的行为。看看
const int APPCOMMAND_VOLUME_MUTE = 0x80000; SendMessage(this.Handle, WM_APPCOMMAND, IntPtr.Zero, (IntPtr)APPCOMMAND_VOLUME_MUTE);
和http://www.blackwasp.co.uk/BasicVolumeControl.aspx
还有诸如麦克风音量控制之类的值,但我没有尝试过。
如果需要对系统主卷进行更多控制,则必须检查Windows版本并执行2个版本的代码:类似于上述Win XP的http://msdn.microsoft.com/en-us/library/windows/desktop/ms646247%28v=vs.85%29.aspx。类似Changing master volume level for Vista及更高版本。
WASAPI(Windows Audio Session API)在控制音频方面非常有用Win32 C ++的流。这是指向API官方文档的链接: