【发布时间】:2016-03-21 19:42:29
【问题描述】:
我正在编写一个我想在用户“空闲”时运行的程序(即用户没有输入 - 不移动鼠标或输入任何内容)。我已经注意检测鼠标是否正在移动(通过将鼠标位置存储为变量并稍后将当前位置与该变量进行比较),但我不知道如何检测键盘输入。
我知道如果用户自己在表单中输入,我可以使用事件侦听器(KeyDown、KeyPressed 等),但我希望这个程序能够检测计算机上任何程序中的键盘输入。
有没有办法做到这一点?我所有的研究都产生了检查表单内部的方法,但不是全局检查。
注意:不确定这是否重要,但我不在乎用户正在输入什么(按下了什么键)。我只需要知道有键盘活动。
提前致谢!
【问题讨论】:
-
这不是您问题的直接答案,但您是否考虑过不同的方法? social.msdn.microsoft.com/Forums/en-US/…
-
要做你所说的,你需要使用
SetWindowsHookEx和WH_KEYBOARD_LL(通过p/invoke),但我认为更好的选择是按照建议使用GetLastInputInfo@FᴀʀʜᴀɴAɴᴀᴍ
标签: c# winforms listener keyboard-events