2012-04-30 6 views
6

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.

+1

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

+1

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

+0

possibile duplicato di [Capture Media Keys quando l'applicazione è ridotta a icona] (http://stackoverflow.com/questions/7196883/capture-media-keys-when-application- è minimizzato) –

risposta