Is it somehow possible to change the volume of a mp3-file that is playing via wmplib? Changing the volume of the program itself would be ok as well.
Are there any solutions to do this?
The idea is to send WM_APPCOMMAND message (also see this answer).
For WPF use WindowInteropHelper to get the Handle
of the Window
:
class MainWindow : Window
{
...
private const int APPCOMMAND_VOLUME_MUTE = 0x80000;
private const int WM_APPCOMMAND = 0x319;
private const int APPCOMMAND_VOLUME_UP = 10 * 65536;
private const int APPCOMMAND_VOLUME_DOWN = 9 * 65536;
[DllImport("user32.dll")]
public static extern IntPtr SendMessageW(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam);
private void VolumeUp()
{
// APPCOMMAND_VOLUME_UP or APPCOMMAND_VOLUME_DOWN
var windowInteropHelper = new WindowInteropHelper(this);
SendMessageW(windowInteropHelper.Handle, (IntPtr)WM_APPCOMMAND, windowInteropHelper.Handle, (IntPtr)APPCOMMAND_VOLUME_UP);
}
}
For Windows Forms use Control.Handle Property:
class MainForm : Form
{
...
private void VolumeUp()
{
SendMessageW(Handle, (IntPtr)WM_APPCOMMAND, Handle, (IntPtr)APPCOMMAND_VOLUME_UP);
}
}