繁体   English   中英

更改音量 win32 C++

[英]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 中的音量,所有其他程序仍然像以前一样响亮,这正是我对任何程序的期望 - 只降低它自己的音量。 当然,可能有理由改变全局音量,没有冒犯 ;)

两种选择:

  1. SO 上这个问题的答案(从 C++ 更改主音量,其中还包括 SetMute 等)

  2. 您是否考虑过显示音量控件并让用户使用? 如果是这样,我可以为此发布一些代码。 (您基本上只是使用音量控制小程序。

如果您只想更改音量,那么您可以使用虚拟键代码来更改音量,如下所示:

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.aspxhttp://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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM