private static void EnsureSubscribedToGlobalKeyboardEvents() { if (HookManager.s_KeyboardHookHandle == 0) { HookManager.s_KeyboardDelegate = new HookManager.HookProc(HookManager.KeyboardHookProc); Process currentProcess = Process.GetCurrentProcess(); ProcessModule mainModule = currentProcess.MainModule; IntPtr moduleHandle = HookManager.GetModuleHandle(mainModule.ModuleName); HookManager.s_KeyboardHookHandle = HookManager.SetWindowsHookEx(13, HookManager.s_KeyboardDelegate, moduleHandle, 0); if (HookManager.s_KeyboardHookHandle == 0) { int lastWin32Error = Marshal.GetLastWin32Error(); } } }