2011-10-04 87 views
1

如何在Java到達第三方應用程序之前攔截並修改鼠標事件(x/y座標,加速等)?攔截並執行第三方應用程序的鼠標事件?

該應用程序是事先已知的(所以像「java myApp 3rdPartyApp」是可能的,如果有幫助的話)。請注意,第三方應用程序可能非常耗費資源。

我想我問的是如何製作一個Java應用程序,作爲真正的鼠標事件和第三方應用程序之間的一層,以便第三方應用程序接收修改的事件但不是原始的由操作系統發送的?這甚至可以用Java?

+0

您使用AWT/SWING,SWT,其他GUI層? –

+0

我還沒有決定,所以任何GUI特定的解決方案是好的。 –

+0

我沒有一個真正的答案,只有一個猜測:也許你可以攔截MouseListeners的方面。 –

回答

2

您有2個純Java解決方案。

首先,您可以連接到AWT事件隊列並獲取所有UI事件:Toolkit.getDefaultToolkit().getSystemEventQueue() 不幸的是,我不確定您可以修改這些事件,但您可以閱讀它們並且可以模擬事件。

其次,您可以在第三方應用程序上創建透明窗口,在該窗口中可以捕獲所有UI事件,然後使用java.awt.Robot來模擬它們。 請參閱here如何創建透明窗口。我嘗試了這種方法,並發現它運行良好。

+0

啊。因此,通過在其上分層窗口,第三方應用程序不會收到鼠標事件(或者我認爲,任何其他事件),因爲它不在焦點中?機器人如何在這個重點方面工作?我如何獲得關於第三方應用程序的一些基本信息,例如維度? –