private async void keyboardButton_Click(object sender, EventArgs e) { if (!_keyboardHookInstalled) { if (_process == null || _process.HasExited) { if (Environment.Is64BitOperatingSystem && radio32bit.Checked) { _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; keyboardButton.Text = "Installing hook..."; await _keyboardHook.InstallAsync(); _keyboardHookInstalled = true; keyboardButton.Text = "Keyboard Unhook"; } else { _keyboardHook.Uninstall(); _keyboardHookInstalled = false; keyboardButton.Text = "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); } }
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"); } } if (_keyboardHook == null) { _keyboardHook = new KeyboardHook(_process.Id); } else { _keyboardHook.RemoveAllHandlers(); } _keyboardHook.MessageReceived += KeyboardHook_MessageReceived; _keyboardHook.AddHandler(KeyCode.F, KeyboardHook_Test); _keyboardHook.AddHandler(KeyCode.F, Modifiers.Shift, 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"; } }
/// <summary> /// Waits for next key asynchronous. /// </summary> /// <returns>The next key press.</returns> public Task <ushort> WaitForNextKeyAsync() { var taskCompletionSource = new TaskCompletionSource <ushort>(); using (var hook = new KeyboardHook(ProcessLurker.CurrentProcessId)) { EventHandler <KeyboardMessageEventArgs> handler = default; handler = (object s, KeyboardMessageEventArgs e) => { taskCompletionSource.SetResult(e.KeyValue); hook.MessageReceived -= handler; }; hook.MessageReceived += handler; _ = hook.InstallAsync(); return(taskCompletionSource.Task); } }
public void HookProcess(int processId) { log.Trace($"Hooking process {processId}"); if (processId != 0) { if (_keyboardHook != null) { _keyboardHook.MessageReceived -= KeyboardHook_MessageReceived; _keyboardHook = null; } try { _keyboardHook = new KeyboardHook(processId); _keyboardHook.MessageReceived += KeyboardHook_MessageReceived; _keyboardHook.InstallAsync().Wait(); } catch (Exception e) { log.Error($"Error while hooking process {processId}", e); } } }