簡體   English   中英

從 C# 中的 Windows 服務捕獲關鍵事件

[英]Capture key events from a Windows Service in C#

我必須用 C# 編寫一個應用程序來監聽任何被按下的鍵。 實際上,我有一個條形碼掃描儀發送“按鍵按下”事件,我需要聽它……它的作用超出了我的問題范圍。

我的安全要求是不允許以任何形式或形式對機器進行任何登錄,並且這必須作為 Windows 服務運行 用戶將啟動機器並走開(即,沒有桌面會話)。

我假設我將不得不為此不受管理。

鑒於安全要求,這甚至可能嗎? 如果是這樣,任何關於從哪里開始的指示都會很棒。

提前致謝,傑

如果您需要查看所有應用程序的鍵盤按下情況,系統范圍的 Hooks 將是正常使用的方法,但問題是 Vista 及更高版本中的安全更改使 hooks 變得不太有用。 一個進程不能在更高的完整性級別掛鈎另一個進程,因此不能保證您會看到所有事件。

但是,如果您只需要查看進入特定應用程序的事件(讀取條形碼的應用程序),那么只要您可以識別該進程,線程特定的掛鈎就足夠了,並且不會出現完整性問題。

您將必須學習 pInvoke 並結合學習如何查找在較低級別的操作系統中生成的正確事件。 通過使用 pInvoke 調用 user32.dll,您的托管代碼可以通過鈎子過濾這些事件。

http://pinvoke.net/default.aspx/user32.SetWindowsHookEx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM