【问题标题】:Make Java program kill itself if a specific external program launches如果特定的外部程序启动,则使 Java 程序自行终止
【发布时间】:2017-12-29 16:30:16
【问题描述】:

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

如果特定的外部程序启动,我需要我的 Java 程序自行终止(弃用)。

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

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

【问题讨论】:

  • 在寻求帮助之前显示您已经尝试过的代码。此外,@ThomasEdwin OP 不是在询问如何关闭程序,而是在询问如何检测何时打开另一个应用程序。
  • 据我所知,你需要建立一个完整的 TCP 连接,并让你的程序等到其他程序连接到它,当它连接到它时,然后关闭它
  • 我注意到你的问题仍然是“开放的”——因为你没有接受答案。请查看并决定是否要accept 回答。或者让我知道我是否可以做些什么来增强我的输入以使其被接受。接受有助于未来的读者确定问题是否已解决,并对花时间回答你的人表示感谢。谢谢!

标签: java windows system


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    在您的第一个程序中,只需创建一个新线程并让它运行。把这段代码放到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();
    }
    

    这将等待连接,一旦建立连接,它将自行关闭。这是因为等待连接的接受方法会阻塞,直到建立连接。这就是为什么你把它放在另一个线程中。 收到连接后,它将解除阻塞,因此代码将继续并退出程序!并且它必须在另一个朋友中,这样才不会阻止您的应用程序!

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

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-08
      • 2011-12-07
      • 1970-01-01
      • 1970-01-01
      • 2021-12-13
      • 2019-02-07
      相关资源
      最近更新 更多