2010-02-09 38 views
5

我希望能夠記錄用戶的鼠標移動,點擊和鍵盤輸入。如果它是一個跨平臺的解決方案,那將會很棒。用Java或C++記錄鼠標移動,點擊和鍵盤輸入

我想找回這樣的(僞代碼):

鼠標移動到500,500 鼠標雙擊點擊 鼠標移動到800,300 鼠標左鍵點擊 鍵盤輸入的「Hello World 「

C++或Java有沒有可以做到這一點的任何類?如果我使用C++,我可能會使用QT框架。

編輯:

我應該說本來這個,但我想記錄的移動和點擊應用程序的GUI之外,因此在桌面上了。

+2

您是否需要記錄系統範圍內的輸入或僅在您的應用程序的主窗口中? – finnw

+0

看到這個類似的問題:http://stackoverflow.com/questions/2147903/retrieve-window-handle-and-press-button-programatically – lsalamon

+1

這是問題是爲c# – Joe

回答

0

GLUT這樣做,但它與OpenGL綁定,這可能是你的項目矯枉過正。

OpenGL是跨平臺的。

+0

或freeglut(http://freeglut.sourceforge.net /),與10年前廢棄的GLUT不同,GLUT積極維護 – Manuel

0

我不認爲有一個跨平臺工具包專門用於從窗口中獲取輸入,但絕大多數工具包都提供此功能。有兩個很好的選擇:

  1. 使用SDL,因爲它相當輕巧,可以處理簡單的輸入。
  2. 每個平臺的本地實現的功能,因爲它應該是在X11,在Windows,Mac OS X瑣碎等
0

如果你想陷阱在整個GUI系統的事件,不只是一個應用程序,有跨平臺解決方案的可能性不大。但是,事件掛鉤部分可以很容易地從錄製部分分離,因此您可以使程序的大部分跨平臺。

對於Windows,you need this 17 year old (!) document。 (男人,我老了!)

+0

http://msdn.microsoft.com/en-us/library/ms997537.aspx:「*此內容已被刪除。」*「 –

+1

@Martin - 更新的鏈接去通過www.archive.org –

0

在Windows上,這叫做Journal Record Hook。你應該用C或C++編寫鉤子部分,在java中做技術上可能是可行的,但這不是一個好主意,你希望你的鉤子程序擁有儘可能少的依賴性,並儘可能快。系統廣泛的鉤子,尤其是日誌會給鍵盤和鼠標輸入增加很多開銷,您希望儘可能地減小您的影響。

您通過使用SetWindowsHookEx傳遞WH_JOURNALRECORD來安裝Windows掛鉤以獲取日誌記錄掛鉤。

你也可以通過安裝WH_KEYBOARD_LLWH_MOUSE_LL來獲得這個工作,但是你的兩個鉤子程序將被單獨調用,你將不得不編寫自己的代碼來按順序排列事件。

我懷疑你會找到一個跨平臺的解決方案。