Non conosco un titolo migliore per la domanda, ma illustrerò il mio problema.C#: Keyboard Hook
Sto lavorando su un'applicazione che agisce come un lettore mp3, utilizza i tasti multimediali per riprodurre/mettere in pausa, fermare la canzone, in realtà ho fatto il lavoro ma il FormApplication deve essere nella top [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);
}
Quindi quello che devo fare è: far funzionare i tasti multimediali anche se il programma è sullo sfondo e non è in primo piano o focalizzato, proprio come funziona Winamp e Windows Media Player.
Ho cercato molto su internet, ma la maggior parte di loro mi dà un modo simile a quello che sto usando.
Grazie mille per il vostro aiuto in anticipo.
Quindi, anche da quello che hai scritto, sembra che il problema non sia nella parte del codice che hai inserito qui, ma nella tastiera stessa. Come stai prendendo il gancio della tastiera globale? Sembra che tu abbia solo un hook dell'applicazione locale, e non uno globale ... – gillyb
Ecco un articolo che ho letto una volta per implementarlo e sono riuscito a farlo bene ... http://blogs.msdn.com/b /toub/archive/2006/05/03/589423.aspx – gillyb
possibile duplicato di [Capture Media Keys quando l'applicazione è ridotta a icona] (http://stackoverflow.com/questions/7196883/capture-media-keys-when-application- è minimizzato) –