Example #1
0
        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);
                }
            }
        }