2011-07-15 56 views
1

我想知道用Java編寫的應用程序是否可以在其他第三方應用程序(如編輯器,辦公應用程序等)中監視事件(如單擊文件菜單或編輯菜單)...進程間通信

我的應用程序應該在後臺運行,它應該能夠捕獲和修改當前焦點應用程序的事件,這些應用程序可能不一定是Java應用程序。

例如:如果一個用戶點擊文件 - >另存爲在Microsoft Word選項,然後我的應用程序應該能夠接收這兩個事件,也能夠對這些事件的自動化每當 必要..

請幫助

在此先感謝

回答

1

我從來沒有在Java中做到了這一點,但因爲你正在處理的Win32中,我至少可以建議原生的一部分。你正在尋找的是在你的系統上掛鉤其他進程。爲此,你必須編寫一個本地DLL。這是一種常用技術,您可以輕鬆找到關於它的大量信息。一個好的起點將是MSDN的Using Hooks

一旦你將DLL注入到系統中的所有其他進程中,你必須弄清楚如何識別出你真正感興趣的進程。你將如何做,這取決於你實際嘗試的是什麼做。爲了更好地理解哪些消息是通過不同的動作發送的,可以使用VS附帶的Spy++

最後,你必須在你的本地DLL和你的Java程序之間建立一些通信。這是我不熟悉的部分:您將不得不使用JNI。幸運的是,JNI是一個很好的主題,你可以在這個網站找到很多建議。