Capture Media Keys when Application is Minimized
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 proces开发者_C百科s those key events in C# without having focus? Is it even possible?
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.
You can do that but only with some global hooking - for source code and details see
- http://globalmousekeyhook.codeplex.com/
- http://www.codeproject.com/KB/system/globalsystemhook.aspx (more low level and will get any keys)
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.
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.
For this prob I implemented this solution:
http://blogs.msdn.com/b/toub/archive/2006/05/03/589423.aspx
精彩评论