2012-11-24 115 views
1

這更多是一個概念性/實現性問題,而不是特定的語言問題。記錄光標移動

有沒有人對光標移動錄製有所瞭解?
獲取光標的當前位置非常容易,但是如何記錄光標所在的路徑?
(細節的程度它可以繪製圖形毫不含糊,以所採取的路徑)我想你可能一個小時間後反覆記錄光標的當前位置,記錄這一切,使按時間順序列表

訪問座標, ,但我不知道記錄應該如何頻繁(或可行)進行;每10毫秒?
我甚至沒有遇到過這樣短的持續時間才能達到必要的精度的方法!

我還在擔心在強烈的CPU使用率下睡眠和錄製的性能;當用戶使用鼠標與密集型軟件進行交互時。

我甚至不完全確定光標在哪裏移動。 如果我在屏幕上掃描光標,讓計算機(內部某處)承認我跨越了所有像素,或者讓我的鼠標真的告訴它「我在那裏,現在我在這裏,現在我在那裏」。

我也在尋求一種區分快慢運動的方法,但現在我只能觀察訪問座標圖上的繪圖間距。

有沒有人對此有所瞭解? 任何潛在的陷阱;我的擔心是否合法? 我對此有錯誤嗎?

(由於是可觀的,我真的需要在這個問題上的一些指導)

謝謝!

+0

這個光標跟蹤是要在您的應用程序中,還是在整個系統中?另外,哪種系統? –

+0

我自己的應用程序,但不是記錄數據的應用程序。Windows 7 –

回答

1

在相同的應用程序中記錄鼠標移動要容易得多 - 只需在每個WM_MOUSEMOVE消息上記錄一些內容即可。您將收到一條消息,定期更新鼠標指針位置。對於鼠標穿過的每個像素,您都不會收到WM_MOUSEMOVE消息,但是它會跳轉,具體取決於您移動鼠標的速度以及系統的繁忙程度。

在某些其他應用程序中記錄鼠標移動將會稍微牽涉一些。如果您已寫入記錄器和正在記錄的應用程序,則可以在正在記錄的應用程序中處理WM_MOUSEMOVE,並將相應的消息發送到記錄器應用程序。您選擇的IPC;一個簡單的SendMessage()可能就足夠了。

記錄整個系統上的鼠標移動是一個完全不同的問題。您可能需要在更接近駕駛員級別的位置掛鉤。

我剛想到另一種方法 - CBT (Computer-Based Training) hooks旨在提供跨應用程序的這種信息。我從來沒有用過這些,所以你必須做更多的調查。

+0

是否以與計算機確認硬件移動相同的頻率發出WM_MOUSEMOVE消息? (無論如何我都認爲它的頻率可以接受) –

+0

不,不在Windows中。會發生什麼事是硬件驅動程序向操作系統發送「嘿鼠標移動」信號,操作系統內部在鼠標當前結束的窗口上設置一個標誌,並說「此窗口需要鼠標移動更新」。之後,當窗口的消息隊列爲空時,Windows將查看「需要鼠標移動更新」標誌,如果設置了該標誌,則會生成一個包含最新位置的WM_MOUSEMOVE消息,然後清除該標誌。所以,如果出於某種原因,你認爲你需要獲得更頻繁的更新,那麼你肯定會考慮驅動程序的實現。 –