8

I want to provide an option with a media player I'm working on for the media keys to work even when it's minimized. What's the best way to capture and process those key events in C# without having focus? Is it even possible?

Adam Haile
  • 30,705
  • 58
  • 191
  • 286

4 Answers4

6

I don't think that there is an easy way to do this but this (Using Window Messages to Implement Global System Hooks in C#) project may help. I added below code

    _GlobalHooks.Keyboard.KeyboardEvent += (w, l) => 
    {
          this.LblMouse.Text = "KEY: " + w.ToInt32().ToString("X8") + " " + l.ToInt32().ToString("X8");
    };
    _GlobalHooks.Keyboard.Start();

to the constructor of Form1 of GlobalHookTest and was able to monitor all the keyboard events.

L.B
  • 114,136
  • 19
  • 178
  • 224
3

You can do that but only with some global hooking - for source code and details see

EDIT:

BEWARE that some Media Keys get translated into APP_COMMAND Windows messages - so you should think about hooking those too.

IF you want to make your mediaplayer automagically start on the press of a (media) key see the links here.

Community
  • 1
  • 1
Yahia
  • 69,653
  • 9
  • 115
  • 144
1

Use global keyboard hooks (Processing Global Mouse and Keyboard Hooks in C#)

Just create the hook when starting your app/form. You can set KeyEventHandlers for the global key up, down and press events. You can then check to see if it is the Key combination you are looking for.

PlexXoniC
  • 31
  • 5
-1

For this prob I implemented this solution:

http://blogs.msdn.com/b/toub/archive/2006/05/03/589423.aspx

ARZ
  • 2,461
  • 3
  • 34
  • 56