【问题标题】:Get current running processes获取当前正在运行的进程
【发布时间】:2017-01-28 01:11:55
【问题描述】:

我正在开发一个程序,该程序需要能够查看 Mac 的“查找器”或 Windows 的“文件资源管理器”是否已打开。我试图通过使用tutorial 来做到这一点。我现在得到的这段代码似乎确实可以列出所有正在运行的进程。

但问题是它不是当前正在运行的进程,这意味着它会列出在下午 2 点运行的进程,即使是凌晨 3 点或类似的时间。这意味着如果我要检查列出的进程是否包含 Finder 或文件资源管理器,无论它是什么都将返回 true,因为它就像一个系统应用程序一直运行并且不能像常规下载的 .exe 那样关闭,关闭它的唯一方法是重新启动 finder 或 explorer。这最初确实会使用其中的 finder 或 explorer 更新进程列表。但是通常当以用户身份打开 finder 或 explorer 时,您并不会真正每次都重新启动应用程序,您只需打开 explorer 或 finder,这不会触发新的运行时进程,这有点困难检查它是否刚刚打开。

我想知道是否有办法修改我的代码,以便检查 finder 或 explorer 的进程是否刚刚启动。它只需要在它刚刚启动时触发,而不是在它已经运行时触发。 我在下面列出了我正在使用的代码。

package readPList;

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class MyProcReader {
    public static void main(String[] args) {
        try {
            String process;

            Process p = Runtime.getRuntime().exec("ps -few");
            BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
            while ((process = input.readLine()) != null) {
                System.out.println(process); 

            }
            input.close();
        } catch (Exception err) {
            err.printStackTrace();
        }
    }
}

对于 mac,我在 "getRuntime()" 行中使用 "ps -few" 行,对于 Windows,我使用 System.getenv("windir") +"\\system32\\"+"tasklist.exe"

【问题讨论】:

    标签: java runtime bufferedreader explorer finder


    【解决方案1】:

    对于 Mac,我建议的另一种方法是使用 AppleScript,它允许您检查应用程序是否正在运行。您可以集成Applescript in java

    请在以下链接中找到:check 如果应用程序在 applescript 中运行,请参阅答案的更新部分。

    【讨论】:

    • 感谢您的意见,我会去看看。它是像一个插件,像一个扩展库,还是我必须安装一些特定的东西,才能使 Java 可以“访问”Applescript?
    • 不,AppleScript link 是 Apple 提供的一种脚本语言,更像是 Windows 中的 VBA Scripts。如果在您的研究后看起来有用,请点赞回答。谢谢
    【解决方案2】:

    新的 Java 9 提供了 ProcessHandle API(进行本机调用):

    ProcessHandle.allProcesses().forEach(p -> System.out.println(p.pid()));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多