2011-07-15 43 views
1

javaで書かれた私のアプリケーションが、エディタ、オフィスアプリケーションなどの他のサードパーティアプリケーションでイベント(ファイルメニューのクリックや編集メニューなど)を監視することが可能かどうかを知りたかったのですが...プロセス間通信

私のアプリケーションはバックグラウンドで実行する必要があり、必ずしもJavaアプリケーションではない可能性がある現在フォーカスされているアプリケーションのイベントをキャプチャして変更できる必要があります。例えば

:ユーザーがファイルをクリックした場合 - > Microsoft Wordのオプションとして保存し、その後、私のアプリケーションは、これら2つのイベントを受信して​​も、いつでも 必要なこれらのイベントを自動化することができるようすることができるはずです。..

事前

答えて

1

おかげで助けてください、私はJavaでこれをやったことがない、しかし、あなたは、Win32を扱っていることから、私は、少なくともネイティブ一部を提案することができます。あなたが探しているのは、あなたのシステム上の他のプロセスをフックすることです。そのためには、ネイティブDLLを作成する必要があります。これは一般的なテクニックであり、簡単に多くの情報を見つけることができます。良い出発点はMSDNのUsing Hooksです。

システム内の他のすべてのプロセスにDLLを注入したら、実際に興味のあるものを特定する方法を見つけなければなりません。行う。さまざまなアクションで送信されるメッセージをよりよく理解するには、VSに付属のSpy++を使用できます。

最後に、ネイティブDLLとJavaプログラム間の通信を設定する必要があります。これは私が慣れていない部分です:あなたはJNIを使用する必要があります。幸運なことに、JNIはよくカバーされているトピックであり、このサイトで多くの提案を見つけることができます。