Guest User

Untitled

a guest
Dec 11th, 2018
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.37 KB | None | 0 0
  1. /// <summary>
  2. /// Mouse Hook
  3. /// </summary>
  4. /// <param name="proc"></param>
  5. /// <returns></returns>
  6.  
  7. private const int WH_MOUSE_LL = 14;
  8. private const int WM_XBUTTONDOWN = 0x020B;
  9.  
  10. private static LowLevelMouseProc _mouseproc = MouseHookCallback;
  11. private static IntPtr _mousehookID = IntPtr.Zero;
  12.  
  13. private static IntPtr SetMouseHook(LowLevelMouseProc proc)
  14. {
  15. using (Process curProcess = Process.GetCurrentProcess())
  16. using (ProcessModule curModule = curProcess.MainModule)
  17. {
  18. return SetWindowsHookEx(WH_MOUSE_LL, proc,
  19. GetModuleHandle(curModule.ModuleName), 0);
  20. }
  21. }
  22.  
  23. private delegate IntPtr LowLevelMouseProc(int nCode, IntPtr wParam, IntPtr lParam);
  24.  
  25. private static IntPtr MouseHookCallback(
  26. int nCode, IntPtr wParam, IntPtr lParam)
  27. {
  28. if (nCode >= 0 && wParam == (IntPtr)WM_XBUTTONDOWN)
  29. {
  30. //int vkCode = Marshal.ReadInt32(wParam);
  31. Console.WriteLine(wParam);
  32. }
  33.  
  34. return CallNextHookEx(_hookID, nCode, wParam, lParam);
  35. }
  36.  
  37. [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
  38. private static extern IntPtr SetWindowsHookEx(int idHook,
  39. LowLevelMouseProc lpfn, IntPtr hMod, uint dwThreadId);
  40.  
  41. /// <summary>
  42. /// Shared CallBack Functions
  43. /// </summary>
  44. /// <param name="proc"></param>
  45. /// <returns></returns>
  46.  
  47. [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
  48. private static extern IntPtr SetWindowsHookEx(int idHook,
  49. LowLevelKeyboardProc lpfn, IntPtr hMod, uint dwThreadId);
  50.  
  51. [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
  52. [return: MarshalAs(UnmanagedType.Bool)]
  53. private static extern bool UnhookWindowsHookEx(IntPtr hhk);
  54.  
  55. [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
  56. private static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode,
  57. IntPtr wParam, IntPtr lParam);
  58.  
  59. [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
  60. private static extern IntPtr GetModuleHandle(string lpModuleName);
Add Comment
Please, Sign In to add comment