Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /// <summary>
- /// Mouse Hook
- /// </summary>
- /// <param name="proc"></param>
- /// <returns></returns>
- private const int WH_MOUSE_LL = 14;
- private const int WM_XBUTTONDOWN = 0x020B;
- private static LowLevelMouseProc _mouseproc = MouseHookCallback;
- private static IntPtr _mousehookID = IntPtr.Zero;
- private static IntPtr SetMouseHook(LowLevelMouseProc proc)
- {
- using (Process curProcess = Process.GetCurrentProcess())
- using (ProcessModule curModule = curProcess.MainModule)
- {
- return SetWindowsHookEx(WH_MOUSE_LL, proc,
- GetModuleHandle(curModule.ModuleName), 0);
- }
- }
- private delegate IntPtr LowLevelMouseProc(int nCode, IntPtr wParam, IntPtr lParam);
- private static IntPtr MouseHookCallback(
- int nCode, IntPtr wParam, IntPtr lParam)
- {
- if (nCode >= 0 && wParam == (IntPtr)WM_XBUTTONDOWN)
- {
- //int vkCode = Marshal.ReadInt32(wParam);
- Console.WriteLine(wParam);
- }
- return CallNextHookEx(_hookID, nCode, wParam, lParam);
- }
- [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
- private static extern IntPtr SetWindowsHookEx(int idHook,
- LowLevelMouseProc lpfn, IntPtr hMod, uint dwThreadId);
- /// <summary>
- /// Shared CallBack Functions
- /// </summary>
- /// <param name="proc"></param>
- /// <returns></returns>
- [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
- private static extern IntPtr SetWindowsHookEx(int idHook,
- LowLevelKeyboardProc lpfn, IntPtr hMod, uint dwThreadId);
- [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
- [return: MarshalAs(UnmanagedType.Bool)]
- private static extern bool UnhookWindowsHookEx(IntPtr hhk);
- [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
- private static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode,
- IntPtr wParam, IntPtr lParam);
- [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
- private static extern IntPtr GetModuleHandle(string lpModuleName);
Add Comment
Please, Sign In to add comment