我试图通过在我的 C# WPF 应用程序中调用 Win32 API 来更改系统的音量。我查看过的每个站点都显示类似于以下的代码:
double val_c = 0;
private void slider1_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
const uint WM_APPCOMMAND = 0x319;
const uint APPCOMMAND_VOLUME_UP = 10;
const uint APPCOMMAND_VOLUME_DOWN = 9;
const uint APPCOMMAND_VOLUME_MUTE = 8;
IntPtr handy = this.Handle;
if (slider1.Value < val_c)
{
Win32.Win32.SendMessage(handy, WM_APPCOMMAND, handy, new IntPtr(APPCOMMAND_VOLUME_DOWN));
}
else
{
Win32.Win32.SendMessage(handy, WM_APPCOMMAND, handy, new IntPtr(APPCOMMAND_VOLUME_UP));
}
val_c = slider1.Value;
}
我不知道在哪里指定我要设置的确切值。
上面的代码将音量增加了多少?实际上,尽管上述内容已发布在多个论坛、博客等上,但我无法使其正常工作。只有在最后一个参数中添加“* 0x10000”时它才有效。即便如此,我也无法弄清楚它的意义。
当滑块(最小值为 0,最大值为 100)值发生变化时,我设置了上述设置,但滑块与实际系统音量不同步。只需将滑块设置为 25 即可将系统音量设置为 100。