在c#中改变通过wmplib播放的mp3音量

是否有可能改变通过wmplib播放的mp3文件的音量? 改变程序本身的音量也是可以的。

有没有解决方案呢?

想法是发送WM_APPCOMMAND消息 (也见这个答案 )。

对于WPF,使用WindowInteropHelper来获取Window Handle

 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); } } 

对于Windows窗体,请使用Control.Handle属性 :

 class MainForm : Form { ... private void VolumeUp() { SendMessageW(Handle, (IntPtr)WM_APPCOMMAND, Handle, (IntPtr)APPCOMMAND_VOLUME_UP); } } 

这是一种简单的方法。

例:

 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) 

希望它对你有所帮助!

这对我有用!

 WMPLib.WindowsMediaPlayer wmsound= new WMPLib.WindowsMediaPlayer(); wmsound.URL = @"C:\Users\USER\sound.mp3"; //Volume 100% finish_sound.settings.volume = 100;