Example #1
0
        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";
            }
        }
Example #2
0
        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);
            }
        }
Example #3
0
        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);
            }
        }
Example #5
0
        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);
                }
            }
        }