プログラムのボリューム (マスターボリュームではなく) を変更したい。現在、次のコードがあります。
DllImport("winmm.dll")]
public static extern int waveOutGetVolume(IntPtr hwo, out uint dwVolume);
[DllImport("winmm.dll")]
public static extern int waveOutSetVolume(IntPtr hwo, uint dwVolume);
private void volumeBar_Scroll(object sender, EventArgs e)
{
// Calculate the volume that's being set
int NewVolume = ((ushort.MaxValue / 10) * volumeBar.Value);
// Set the same volume for both the left and the right channels
uint NewVolumeAllChannels = (((uint)NewVolume & 0x0000ffff) | ((uint)NewVolume << 16));
// Set the volume
waveOutSetVolume(IntPtr.Zero, NewVolumeAllChannels);
}
これは Windows XP でのみ機能し、Windows 7 では機能しません (おそらく Vista でも機能しません)。マスターボリュームを変更するためだけに、Win 7で同じことを達成するスクリプトは見つかりませんでした(私は後でありません)。