フォームにスライダーと webbrowser オブジェクトがあり、スライドすると音量が変わるはずですが、ここに示すようにスライダーが移動します。
ただし、ボリュームの実際の出力は変更されません。これはおそらく、WebBrowser オブジェクトを統合し、Windows 7 を使用しているためです。スライダー (スクリーンショットに表示されているもの) を手動でスライドすると、音量出力が変化します。.wav ファイルを再生すると、ボリュームの出力は変化しますが、WebBrowser オブジェクトでは変化しません。
私は次のコードを使用しています:
Xaml
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Slider Minimum="0" Maximum="10" ValueChanged="ValueChanged"/>
</Grid>
</Window>
C#
public partial class MainWindow
{
public MainWindow()
{
InitializeComponent();
}
private void ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
// Calculate the volume that's being set
double newVolume = ushort.MaxValue * e.NewValue / 10.0;
uint v = ((uint) newVolume) & 0xffff;
uint vAll = v | (v << 16);
// Set the volume
int retVal = NativeMethods.WaveOutSetVolume(IntPtr.Zero, vAll);
Debug.WriteLine(retVal);
}
}
static class NativeMethods
{
[DllImport("winmm.dll", EntryPoint = "waveOutSetVolume")]
public static extern int WaveOutSetVolume(IntPtr hwo, uint dwVolume);
}