2017-12-29 70 views
1

タイトルを起動する場合、Javaプログラムが自身を殺す作ることは基本的にそれはすべてちょうどしかし、繰り返しに言う:特定の外部プログラムが

特定の外部プログラムが起動した場合、私は(E/wの処分)自体を殺すために私のJavaプログラムを必要とします。

私のjavaプログラムは、マウスの入力を待ち受けるグローバルフックを使用しています。クライアントコンピュータにリモート接続すると、自分のプログラムで作成されたマウスリスナ/ GUIが、これを処理するには、使用しているスクリーン接続アプリケーションが起動したときに自動的に "オフ"するプログラムが必要です。

私はすでにマウス入力をキャプチャするためにグローバルフックを使用していますが、おそらくシステムイベントに使用できる同様のものがありますか?

+0

では、すでに助けを求める前に、試してみましたコードを表示します。また、@ ThomasEdwin OPは、プログラムを閉じる方法を尋ねていない、彼は別のアプリケーションが開かれたときを検出する方法を尋ねている。 – arkdevelopment

+0

私が知っているところでは、TCP接続全体をセットアップし、他のプログラムが接続するまでプログラムを待たせる必要があります。 – Joza100

答えて

0

使用しているそれぞれのJavaのバージョンに応じて、実行中のプロセスのリストをオペレーティングシステムに定期的にスキャンするために使用できるさまざまなライブラリがあります。

好きではないものが表示された場合は、たとえばSystem.exitを使用して反応してください。

0

最初のプログラムでは、新しいスレッドを作成して実行させるだけです。このコードを実行メソッドに入れてください:

try { 
    ServerSocket socket = new ServerSocket(1111); // the paramater is a port and you can choose any port you want 
    socket.accept(); 
    socket.close(); 
    System.exit(0); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

これは接続を待つことになり、接続が確立されると自動的に閉じます。これは、接続が確立するまで接続を待機するacceptメソッドがブロックされるためです。そういうわけで、あなたはそれを別のスレッドに入れます。 接続を受信するとブロックが解除され、コードは続行され、プログラムが終了します。それはあなたのアプリケーションをブロックしないように、別の友人になければなりません!

2番目のアプリケーションでは、最初に接続するだけです! 接続がこのコードを使用するには:

try (Socket socket = new Socket("localhost" ,1111);){ 
     socket.close(); 
} catch (IOException e) { 
} 

これは、それを接続し、それがないと、最初のプログラムが終了します。今すぐこのプログラムを続行してください!あなたが最良のソケットを理解していない場合は、このリンクをチェックしてください。これは、上空で説明されている:

https://www.javaworld.com/article/2077322/core-java/core-java-sockets-programming-in-java-a-tutorial.html

関連する問題