Dot-Net
來自 Windows 服務的全域鍵盤掛鉤
是否可以從 windows(xp 和 7)服務編寫全域鍵盤掛鉤?(使用 SetWindowsHookEx 在系統服務中不起作用)
的文件
SetWindowsHookEx說:或與呼叫執行緒在同一桌面上的所有執行緒。
所以你需要關聯同一個桌面(即使不考慮終端服務也會有多個桌面:普通桌面、安全桌面(用於UAC和登錄)和螢幕保護程序)。
由於服務不與互動式會話相關聯(並且,從 Windows V6 開始,不能),您將需要使用者會話中的一個程序來執行掛鉤,並與後端服務通信(例如,通過命名管道)。並且不要忘記在沒有人登錄和多個使用者登錄的情況下進行測試。