2012-04-30 14 views
6

No conozco un título mejor para la pregunta, pero voy a ilustrar mi problema.C#: Keyboard Hook

estoy trabajando en aplicación que actúa como un reproductor de MP3, que utiliza las teclas multimedia para reproducir/pausa, detener la canción, que en realidad hizo que funcione, pero la FormApplication debe estar en la parte superior [Enfocado]

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

Entonces, lo que tengo que hacer es: hacer que las teclas multimedia funcionen incluso si el programa está en segundo plano y no está en la parte superior o enfocado, al igual que funciona winamp y Windows Media Player.

He buscado mucho en Internet, pero la mayoría de ellos me da una forma similar a la que estoy usando.

Muchas gracias por su ayuda con anticipación.

+1

Por lo tanto, incluso por lo que escribió, parece que el problema no está en la parte del código que coloca aquí, sino en el gancho del teclado. ¿Cómo atrapa el gancho del teclado global? Parece que solo tiene un enganche de aplicación local, y no uno global ... – gillyb

+1

Aquí hay un artículo que una vez leí para implementar esto, y logré hacerlo bien ... http://blogs.msdn.com/b /toub/archive/2006/05/03/589423.aspx – gillyb

+0

posible copia de [Capture Media Keys cuando la aplicación está minimizada] (http://stackoverflow.com/questions/7196883/capture-media-keys-when-application- está minimizado) –

Respuesta