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

2024-03-24

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

我的目标是在按下特定系列的键时发送电子邮件。例如,如果您按 h-e-l-l-o,无论您在桌面上的哪个位置键入,程序都应该发送电子邮件。

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

我怎么能做这样的事呢? 举个例子会很有帮助。


正如有人已经评论过的那样,Windows 服务没有可以接收键盘焦点或 Windows 键盘消息的前台窗口。因此,要实现您所追求的目标,您唯一的选择就是使用低级事件挂钩 https://learn.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-setwindowshookexa接收键盘事件。

但请注意,这些是系统范围的事件,您的服务可能会被它们淹没。它们在屏幕阅读器和其他辅助技术等应用程序中很有用,但我建议在使用此方法之前尝试考虑是否有其他方法可以完成您想做的事情。例如,您可以只在系统托盘中运行一个应用程序并订阅WM_HOTKEY消息 https://learn.microsoft.com/en-us/windows/desktop/inputdev/wm-hotkey通过调用注册热键 https://learn.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-registerhotkey?

这是一个C# 中的低级键盘挂钩示例 https://blogs.msdn.microsoft.com/toub/2006/05/03/low-level-keyboard-hook-in-c/.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 C# windows 服务中捕获键盘事件 的相关文章

随机推荐