Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class Program
- {
- /*
- * Hook Variables
- */
- private const int WH_KEYBOARD_LL = 13;
- private const int WM_KEYDOWN = 0x0100;
- private const int VK_F1 = 0x70;
- private static LowLevelKeyboardProc _proc = HookCallback;
- private static IntPtr _hookID = IntPtr.Zero;
- /*
- * Hook DllImports
- */
- [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);
- /*
- * Variables
- */
- public delegate void TheKeyEventHandler();
- public static event TheKeyEventHandler OnKey;
- private static Program instance = new Program();
- public static Program Instance
- {
- get
- {
- return instance;
- }
- }
- /*
- * Main
- */
- [STAThread]
- static void Main()
- {
- }
- /*
- * Constructor
- */
- private Program()
- {
- Application.EnableVisualStyles();
- Application.SetCompatibleTextRenderingDefault(false);
- _hookID = SetHook(_proc);
- Form = new Form1();
- OnKey += Program_OnKeyPress;
- Application.Run(Form);
- UnhookWindowsHookEx(_hookID);
- }
- void Program_OnKeyPress()
- {
- // Interact with the form.
- }
- /*
- * Hook Methods
- */
- private static IntPtr SetHook(LowLevelKeyboardProc proc)
- {
- using (Process curProcess = Process.GetCurrentProcess())
- using (ProcessModule curModule = curProcess.MainModule)
- {
- return SetWindowsHookEx(WH_KEYBOARD_LL, proc, GetModuleHandle(curModule.ModuleName), 0);
- }
- }
- private delegate IntPtr LowLevelKeyboardProc(int nCode, IntPtr wParam, IntPtr lParam);
- private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
- {
- if (nCode >= 0)
- {
- Keys number = (Keys)Marshal.ReadInt32(lParam);
- OnKey();
- }
- return CallNextHookEx(IntPtr.Zero, nCode, wParam, lParam);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment