Hey, I was wondering if anyone could help me setup a Global Keyboard Hook for my application.
I want to set Hotkeys (Such as Ctrl+S) that can be used when not focused on the actual form.
Anyone got an idea?
~Regards
Luke
Hey, I was wondering if anyone could help me setup a Global Keyboard Hook for my application.
I want to set Hotkeys (Such as Ctrl+S) that can be used when not focused on the actual form.
Anyone got an idea?
~Regards
Luke
Paul's post links to two answers, one telling you how to implement a hook, and another telling you to call RegisterHotKey. You shouldn't need to install a hook for something as simple as a Ctrl+S hotkey, so call RegisterHotKey instead.
Or you can use C#'s MessageFilter. It should work while any control/form from your application's process has focus.
Sample Code:
class KeyboardMessageFilter : IMessageFilter
{
public bool PreFilterMessage(ref Message m)
{
if (m.Msg == ((int)Helper.WindowsMessages.WM_KEYDOWN))
{
switch ((int)m.WParam)
{
case (int)Keys.Escape:
// Do Something
return true;
case (int)Keys.Right:
// Do Something
return true;
case (int)Keys.Left:
// Do Something
return true;
}
}
return false;
}
}
And than simply add a new MessageFilter to your Application:
Application.AddMessageFilter(new KeyboardMessageFilter());