public KeyHook(Form form) { this.form = form; keyDown.Add(Keys.LWin, delegate { win_pushed = true; return(false); }); keyUp.Add(Keys.LWin, delegate { win_pushed = false; return(false); } ); keyUp.Add(Keys.Left, delegate { if (form.Visible) { LeftArrowEvent?.Invoke(); return(false); } return(true); }); keyUp.Add(Keys.Right, delegate { if (form.Visible) { RightArrowEvent?.Invoke(); return(false); } return(true); }); keyUp.Add(Keys.Enter, delegate { if (form.Visible) { EnterClickEvent?.Invoke(); return(false); } return(true); }); keyUp.Add(Keys.Escape, delegate { if (form.Visible) { OpenCloseEvent?.Invoke(); return(false); } return(true); }); startApps.Add(Keys.D, delegate { OpenCloseEvent?.Invoke(); }); startApps.Add(Keys.E, delegate { Process.Start("explorer"); }); startApps.Add(Keys.I, delegate { Process.Start("ms-settings:"); }); startApps.Add(Keys.L, delegate { Process.Start("rundll32.exe user32.dll,LockWorkStation"); }); startApps.Add(Keys.R, delegate { Shell32.Shell shell = new Shell32.Shell(); shell.FileRun(); }); startApps.Add(Keys.D0, delegate { ShutdownClickEvent?.Invoke(); }); hookDelegate = HookCallback; using (Process curProcess = Process.GetCurrentProcess()) { using (ProcessModule curModule = curProcess.MainModule) { _hookID = SetWindowsHookEx(WH_KEYBOARD_LL, hookDelegate, GetModuleHandle(curModule.ModuleName), 0); } } }