Advertisement
Guest User

Untitled

a guest
Jun 28th, 2013
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.21 KB | None | 0 0
  1. class globalKeyboardHook {
  2.  
  3. public struct keyboardHookStruct {
  4. public int vkCode;
  5. public int scanCode;
  6. public int flags;
  7. public int time;
  8. public int dwExtraInfo;
  9. }
  10.  
  11. public delegate int keyboardHookProc(int code, int wParam, ref keyboardHookStruct lParam);
  12.  
  13. public keyboardHookProc hookP;
  14.  
  15. const int WH_KEYBOARD_LL = 13;
  16. const int WM_KEYDOWN = 0x100;
  17. const int WM_KEYUP = 0x101;
  18. const int WM_SYSKEYDOWN = 0x104;
  19. const int WM_SYSKEYUP = 0x105;
  20. #endregion
  21.  
  22.  
  23. public List<Keys> HookedKeys = new List<Keys>();
  24. IntPtr hhook = IntPtr.Zero;
  25.  
  26.  
  27. public event KeyEventHandler KeyDown;
  28.  
  29. public event KeyEventHandler KeyUp;
  30.  
  31.  
  32. public globalKeyboardHook() {
  33. hook();
  34. }
  35.  
  36.  
  37. ~globalKeyboardHook() {
  38. unhook();
  39. }
  40.  
  41.  
  42.  
  43. public void hook() {
  44. IntPtr hInstance = LoadLibrary("User32");
  45.  
  46. hookP = new keyboardHookProc(hookProc);
  47.  
  48. hhook = SetWindowsHookEx(WH_KEYBOARD_LL, hookP, hInstance, 0);
  49. }
  50.  
  51.  
  52. public void unhook() {
  53. UnhookWindowsHookEx(hhook);
  54. }
  55.  
  56. public int hookProc(int code, int wParam, ref keyboardHookStruct lParam) {
  57. if (code >= 0) {
  58. Keys key = (Keys)lParam.vkCode;
  59. if (HookedKeys.Contains(key)) {
  60. KeyEventArgs kea = new KeyEventArgs(key);
  61. if ((wParam == WM_KEYDOWN || wParam == WM_SYSKEYDOWN) && (KeyDown != null)) {
  62. KeyDown(this, kea) ;
  63. } else if ((wParam == WM_KEYUP || wParam == WM_SYSKEYUP) && (KeyUp != null)) {
  64. KeyUp(this, kea);
  65. }
  66. if (kea.Handled)
  67. return 1;
  68. }
  69. }
  70. return CallNextHookEx(hhook, code, wParam, ref lParam);
  71. }
  72.  
  73. [DllImport("user32.dll")]
  74. static extern IntPtr SetWindowsHookEx(int idHook, keyboardHookProc callback, IntPtr hInstance, uint threadId);
  75.  
  76. [DllImport("user32.dll")]
  77. static extern bool UnhookWindowsHookEx(IntPtr hInstance);
  78.  
  79. [DllImport("user32.dll")]
  80. static extern int CallNextHookEx(IntPtr idHook, int nCode, int wParam, ref keyboardHookStruct lParam);
  81.  
  82. [DllImport("kernel32.dll")]
  83. static extern IntPtr LoadLibrary(string lpFileName);
  84.  
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement