繁体   English   中英

在 C# windows 服务中捕获键盘事件

[英]Capturing Keyboard events in C# windows service

我在 C# 中创建了一个 Windows 服务。 每当按下键时如何调用函数,并在此函数中获取键的值。 我需要它来向上键和向下键。

我的目标是在按下某个系列的键时发送电子邮件。 例如,如果您按 hello,无论您在桌面上的何处键入它,程序都应该发送电子邮件。

另外,我可以用另一种方式实现它。 我需要一个在后台运行并在按下某个键时执行某些操作的程序。

我怎么能做这样的事情? 一个例子会有所帮助。

我发现的最佳解决方案:
通常,作者在user32.dll程序集中的低级方法上创建 .NET 包装器,这使得使用这些方法非常愉快和愉快。

    private LowLevelKeyboardListener _listener;        
    _listener = new LowLevelKeyboardListener();
    _listener.OnKeyPressed += _listener_OnKeyPressed;
    _listener.HookKeyboard();

    void _listener_OnKeyPressed(object sender, KeyPressedArgs e)
    {
        this.textBox_DisplayKeyboardInput.Text += e.KeyPressed.ToString();
    }

这里是原始链接

正如有人已经评论过的那样,Windows 服务没有可以接收键盘焦点或 Windows 键盘消息的前台窗口。 因此,实现您所追求的目标的唯一选择是使用低级事件挂钩来接收键盘事件。

但是请注意,这些是系统范围的事件,您的服务可能会被它们淹没。 它们在屏幕阅读器和其他辅助技术等应用程序中很有用,但我建议在使用这种方法之前尝试考虑是否有其他方法可以完成您想做的事情。 例如,您能否在系统托盘中运行一个应用程序并通过调用RegisterHotKey订阅WM_HOTKEY 消息

这是C# 中低级键盘挂钩示例

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM