Я пытаюсь написать простое приложение, которое пропускает текущий трек, аналогично тому, как будут работать кнопки мультимедиа на клавиатуре.Отправить сообщение с APPCOMMAND_MEDIA_NEXT_TRACK
Я нашел значения LParam для отключения звука (0x80000), но я не знаю, как найти значения для таких команд, как следующий/предыдущий трек или как 8 (из приведенной ниже статьи) сопоставляется с 0x80000, поэтому я могу решить, как карта 11 (следующий трек из статьи ниже) в код, который работает ?.
мьютинг работает с помощью 0x80000, но не при использовании 8.
Извините, если это глупый вопрос, я никогда не делал каких-либо Interop вещи раньше.
Благодаря
https://msdn.microsoft.com/en-us/library/windows/desktop/ms646275%28v=vs.85%29.aspx
using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;
public partial class Form1 : Form
{
private const int WM_APPCOMMAND = 0x319;
private const int APPCOMMAND_VOLUME_MUTE = 0x80000;
private const int APPCOMMAND_VOLUME_MUTE_INT = 8;
//private const int APPCOMMAND_MEDIA_NEXT_TRACK = ?;
private const int APPCOMMAND_MEDIA_NEXT_TRACK = 11;
[DllImport("user32.dll")]
public static extern IntPtr SendMessageW(IntPtr hWnd, int Msg, IntPtr wParam, int lParam);
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
// doesn't work
//SendMessageW(this.Handle, WM_APPCOMMAND, this.Handle,
// APPCOMMAND_VOLUME_MUTE_INT);
SendMessageW(this.Handle, WM_APPCOMMAND, this.Handle,
APPCOMMAND_VOLUME_MUTE);
}
}