Dot-Net

來自 Windows 服務的全域鍵盤掛鉤

  • April 28, 2011

是否可以從 windows(xp 和 7)服務編寫全域鍵盤掛鉤?(使用 SetWindowsHookEx 在系統服務中不起作用)

的文件SetWindowsHookEx說:

或與呼叫執行緒在同一桌面上的所有執行緒。

所以你需要關聯同一個桌面(即使不考慮終端服務也會有多個桌面:普通桌面、安全桌面(用於UAC和登錄)和螢幕保護程序)。

由於服務不與互動式會話相關聯(並且,從 Windows V6 開始,不能),您將需要使用者會話中的一個程序來執行掛鉤,並與後端服務通信(例如,通過命名管道)。並且不要忘記在沒有人登錄和多個使用者登錄的情況下進行測試。

引用自:https://stackoverflow.com/questions/5815424