有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在用户关闭计算器时打印消息?

我有一个Java程序,可以用ProcessBuilder打开Windows计算器。我需要检测用户何时关闭程序,并显示一条消息,说明“程序已成功关闭”

Process p = Runtime.getRuntime().exec("calc.exe");
p.waitFor();
System.out.println("Program has been closed successfully");

问题是程序打开时会出现消息


共 (1) 个答案

  1. # 1 楼答案

    您可以使用this answer中的代码定期检查进程是否仍在运行,然后在进程丢失时发布消息。在Windows 10上,您正在寻找的进程是^{

    以下是Java 8检查进程是否正在运行的方法:

    private static boolean processIsRunning(String processName) throws IOException {
    
        String taskList = System.getenv("windir") + "\\system32\\tasklist.exe";
        InputStream is = Runtime.getRuntime().exec(taskList).getInputStream();
    
        try (BufferedReader br = new BufferedReader(new InputStreamReader(is))) {
            return br
                .lines()
                .anyMatch(line -> line.contains(processName));
        }
    
    }
    

    然后你可以等待processIsRunning("Calculator.exe")为真

    下面是一个快速而肮脏的实现:

    public static void main(String[] args) throws Exception {
        Runtime.getRuntime().exec("calc.exe").waitFor();
        while (processIsRunning("Calculator.exe")) {
            Thread.sleep(1000); // make this smaller if you want
        }
        System.out.println("Program has been closed successfully");
    }