/// <summary> /// Installs the specified hook. /// </summary> /// <param name="hook">The hook.</param> /// <param name="handler">The handler.</param> /// <param name="hold">if set to <c>true</c> [hold].</param> public void Install(KeyboardHook hook, KeyboardEventHandler handler, bool hold = false) { if (!this.IsDefined() || handler == null) { return; } hook.AddHandler(this.KeyCode, KeyDirection.Up, this.Modifier, handler); if (hold) { hook.AddHandler(this.KeyCode, KeyDirection.Down, this.Modifier, handler); } this._hook = hook; this._handler = handler; this._registeredKeycode = this.KeyCode; this._registeredModifier = this.Modifier; this._isHoldHotkey = true; }
private async void keyboardButton_Click(object sender, EventArgs e) { if (!_keyboardHookInstalled) { if (_process == null || _process.HasExited) { if (Environment.Is64BitOperatingSystem && (radio32bit.IsChecked ?? false)) { _process = Process.Start(@"c:\windows\syswow64\notepad.exe"); } else { _process = Process.Start(@"c:\windows\notepad.exe"); } } _keyboardHook = new KeyboardHook(_process.Id); _keyboardHook.MessageReceived += KeyboardHook_MessageReceived; //_keyboardHook.AddHandler(KeyCode.Y, KeyboardHook_Test); _keyboardHook.AddHandler(KeyCode.Y, Modifiers.ControlShift, KeyboardHook_Test); _keyboardHook.AddHandler(KeyCode.U, Modifiers.Shift | Modifiers.RightControl, KeyboardHook_Test); _keyboardHook.AddHandler(KeyCode.N, Modifiers.AltControlShift, KeyboardHook_Test); _keyboardHook.AddHandler(KeyCode.T, KeyboardHook_Test); keyboardButton.Content = "Installing hook..."; await _keyboardHook.InstallAsync(); _keyboardHookInstalled = true; keyboardButton.Content = "Keyboard Unhook"; } else { _keyboardHook.Uninstall(); _keyboardHookInstalled = false; keyboardButton.Content = "Keyboard Hook"; } }
static void Main(string[] args) { var processLurker = new PathOfExileProcessLurker(); var processId = processLurker.WaitForProcess().Result; var hook = new KeyboardHook(processId); hook.AddHandler('F', Hook_MessageReceived); //hook.MessageReceived += Hook_MessageReceived; hook.InstallAsync().Wait(); while (true) { Thread.Sleep(200); } }