Получите ключ уровня ОС -нажмите события в приложении C #

я не знаю лучшего названия для вопроса, но я `проиллюстрирую моя проблема.

Я работаю над приложением, которое действует как mp3-плеер, оно использует мультимедийные клавиши для воспроизведения/паузы, остановки песни, я на самом деле заставил его работать, но FormApplication должен быть наверху [Focused]

protected override void WndProc(ref Message msg)
{
    if (msg.Msg == 0x319)   // WM_APPCOMMAND message
    {
        // extract cmd from LPARAM (as GET_APPCOMMAND_LPARAM macro does)
        int cmd = (int)((uint)msg.LParam >> 16 & ~0xf000);
        switch (cmd)
        {
            case 13:  // APPCOMMAND_MEDIA_STOP constant
                MessageBox.Show("Stop");
                break;
            case 14:  // APPCOMMAND_MEDIA_PLAY_PAUSE
                MessageBox.Show("Play/Pause");
                break;
            case 11:  // APPCOMMAND_MEDIA_NEXTTRACK
                MessageBox.Show("Next");
                break;
            case 12:  // APPCOMMAND_MEDIA_PREVIOUSTRACK
                MessageBox.Show("Previous");
                break;
            default:  
                break;
        }
    }
    base.WndProc(ref msg);
}


private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
    Message m = new Message();
    m.Msg = e.KeyChar;

    WndProc(ref m);
}

Итак, что Мне нужно :заставить мультимедийные клавиши работать, даже если программа находится в фоновом режиме, а не сверху или в фокусе, точно так же, как работают winamp и Windows Media Player.

Я много искал в Интернете, но большинство из них дают мне способ, похожий на тот, который я использую.

Заранее большое спасибо за помощь.

9
задан Zapacila 24 April 2019 в 11:04
поделиться