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

时间:2019-05-12 20:34:07

标签: c# .net keyboard windows-services

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

我的目标是在按下某些键序列后发送电子邮件。例如,如果您按h-e-l-l-o,则即使您在桌面上的任何位置键入它,程序都应发送电子邮件。

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

我该怎么做? 一个例子会有所帮助。

2 个答案:

答案 0 :(得分:1)

正如有人已经评论过的那样,Windows服务没有前台窗口,该前台窗口可以接收键盘焦点或Windows键盘消息。因此,要完全实现您的目标,唯一的选择是使用low level event hook接收键盘事件。

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

这里是example of a low-level keyboard hook in C#

答案 1 :(得分:0)

我发现的最佳解决方案是this