2011-06-01 27 views
0

我有一個透明窗口(WS_EX_TRANSPARENT)浮動最頂層。每當有鼠標移動(屏幕上的任何位置)或鍵盤敲擊時,它需要顯示相關信息(例如鼠標位置)。如何在沒有全局鉤子的情況下獲得鼠標/鍵盤活動的通知?

是否可以在不使用全局鉤子的情況下捕獲鼠標/鍵盤活動?反病毒軟件幾乎總是會觸發使用全局鉤子的錯誤警報。

任何想法非常感謝。

回答

0

你可以得到鍵盤/鼠標活動的通知(GetLastInputInfo),我相當肯定你可以得到光標位置(GetMouseMovePointsEx)。如果你不需要實際的鍵盤筆劃,那就應該這樣做。如果你這樣做,我不認爲它可以做...

0

您可以通過RegisterRawInputDevices註冊接收原始輸入消息。看看over here,在RRUZ的接受答案中有一些鏈接,一個指向C#實現。這適用於窗口消息,不涉及任何鉤子。 (使用此方法,您還可以獲得有關特定設備的信息,因此您可以區分多個鍵盤,這就是大多數「使用RegisterRawInputDevices」作爲答案的問題的標題,但您也可以使用它剛剛捕獲輸入,不關心源。)

0

LASTINPUTINFO lastInputInfo = new LASTINPUTINFO(); UInt32 lastInputTick = lastInputInfo.dwTime; return Environment.TickCount - (Int32)lastInputInfo.dwTime

此代碼(C#)返回非活動時間(鍵盤和鼠標兩者)。所以你可以有用戶不活躍的時間。

相關問題