如果特定外部程序启动,则使Java程序自行终止

时间:2017-12-29 16:30:16

标签: java windows system

标题基本上只是说明了一切,但重申:

如果某个特定的外部程序启动,我需要我的Java程序自杀(配置w / e)。

我的java程序使用一个侦听鼠标输入的全局钩子,当我远程进入客户端计算机时,我的程序创建的鼠标监听器/ GUI会导致鼠标的各种问题(如果使用的话)我在连接时。为了解决这个问题,我需要我的程序在我们使用的屏幕连接应用程序启动时自动“关闭”。

我已经使用全局钩子来捕获鼠标输入,是否有类似我可以用于系统事件的东西?

2 个答案:

答案 0 :(得分:0)

根据您使用的Java版本,您可以使用各种库来定期“扫描”操作系统以获取正在运行的进程列表。

如果出现您不喜欢的内容,只需使用System.exit做出反应即可。

答案 1 :(得分:0)

在你的第一个程序中,只需创建一个新的Thread并让它运行。将此代码放在run方法中:

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方法会阻塞,直到建立连接为止。这就是你把它放在另一个线程中的原因。 收到连接后,它将解锁,因此代码将继续并退出程序!它必须在另一个朋友,所以它不会阻止你的应用程序!

在第二个应用程序中,在开始时只需建立连接! 要建立连接,请使用以下代码:

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