在Windows(XP和7)服务中编写全局键盘钩子是否可行?(使用SetWindowsHookEx无法从系统服务中工作)
在Windows(XP和7)服务中编写全局键盘钩子是否可行?(使用SetWindowsHookEx无法从系统服务中工作)
SetWindowsHookEx
的文档说明如下:
或使用与调用线程在同一个桌面中的所有线程。
因此,您需要与相同的桌面相关联(即使不考虑终端服务,仍会存在多个桌面:普通桌面、安全桌面(用于UAC和登录)和屏幕保护程序)。
由于服务未与交互式会话关联(自Windows V6起也不能),因此您需要在用户会话内使用一个进程进行挂钩,并与后端服务通信(例如通过命名管道)。还要记得在无人登录和多个用户登录时进行测试。