You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.4 KiB
56 lines
1.4 KiB
using System; |
|
using System.Runtime.InteropServices; |
|
using System.Windows.Forms; |
|
|
|
namespace NumpadMonitor |
|
{ |
|
internal class KeyHandler |
|
{ |
|
[DllImport("user32.dll")] |
|
private static extern bool RegisterHotKey(IntPtr hWnd, int id, int fsModifiers, int vk); |
|
|
|
[DllImport("user32.dll")] |
|
private static extern bool UnregisterHotKey(IntPtr hWnd, int id); |
|
|
|
public KeyInfo KeyInfo { get; private set; } |
|
private readonly IntPtr hWnd; |
|
private readonly int id; |
|
|
|
public void SetKeyCode(IntPtr keyCode) |
|
{ |
|
KeyInfo.SetKeyCode(keyCode); |
|
} |
|
|
|
public KeyHandler(Keys key, Form form) |
|
{ |
|
KeyInfo = new KeyInfo(key); |
|
hWnd = form.Handle; |
|
id = GetHashCode(); |
|
} |
|
|
|
public KeyHandler(KeyInfo keyInfo, Form form) |
|
{ |
|
KeyInfo = keyInfo; |
|
hWnd = form.Handle; |
|
id = GetHashCode(); |
|
} |
|
|
|
public override int GetHashCode() |
|
{ |
|
int hash = 17; |
|
hash = hash * 23 + KeyInfo.GetHashCode(); |
|
hash = hash * 23 + hWnd.ToInt32(); |
|
return hash; |
|
} |
|
|
|
public bool Register() |
|
{ |
|
return RegisterHotKey(hWnd, id, KeyInfo.FsModifiers, (int)KeyInfo.Key); |
|
} |
|
|
|
public bool Unregiser() |
|
{ |
|
return UnregisterHotKey(hWnd, id); |
|
} |
|
} |
|
} |