Capture Media Keys when Application is Minimized

2019-01-20 09:08发布

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?

4条回答
▲ chillily
2楼-- · 2019-01-20 09:21

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.

查看更多
smile是对你的礼貌
3楼-- · 2019-01-20 09:27

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.

查看更多
Melony?
4楼-- · 2019-01-20 09:44

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.

查看更多
The star\"
5楼-- · 2019-01-20 09:44
登录 后发表回答