Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

change volume of mp3 playing via wmplib in c#

Tags:

c#

volume

wmplib

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?

like image 427
f4bzen Avatar asked Dec 19 '25 02:12

f4bzen


2 Answers

This is a simple way to do it.

Example:

WMPlib.WindowsMediaPlayer wmp = new WMPlib.WindowsMediaPlayer(); //Creates an instance of the WMP
wmp.url="URI to media source"; //Sets media source
wmp.settings.volume= 50;  //Volume can be 0-100 (inclusive)

Hope it helped you!

like image 182
Abid Ali Avatar answered Dec 21 '25 20:12

Abid Ali


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);
    }
}
like image 35
Sergey Vyacheslavovich Brunov Avatar answered Dec 21 '25 18:12

Sergey Vyacheslavovich Brunov