gpt4 book ai didi

java - 如何获取当前正在运行的应用程序列表,如任务管理器,但使用 JAVA 在后台运行的应用程序除外?

转载 作者:搜寻专家 更新时间:2023-11-01 03:31:00 26 4
gpt4 key购买 nike

如何获取当前正在运行的应用程序列表,如任务管理器,除了使用 JAVA 在后台运行的应用程序?我找到了这段代码 - https://stackoverflow.com/a/41634959/11297873 :

 Process process = new ProcessBuilder("tasklist.exe", "/fo", "csv", "/nh").start();
new Thread(() -> {
Scanner sc = new Scanner(process.getInputStream());
if (sc.hasNextLine()) sc.nextLine();
while (sc.hasNextLine()) {
String line = sc.nextLine();
String[] parts = line.split(",");
String unq = parts[0].substring(1).replaceFirst(".$", "");
String pid = parts[1].substring(1).replaceFirst(".$", "");
System.out.println(unq + " " + pid);
}
}).start();
process.waitFor();
System.out.println("Done");

我不想显示系统、Windows、Intel 等后台应用程序....

最佳答案

此处您需要名为 Get-Process 的 powershell cmdlet .

   Process process = new ProcessBuilder("powershell","\"gps| ? {$_.mainwindowtitle.length -ne 0} | Format-Table -HideTableHeaders  name, ID").start();
new Thread(() -> {
Scanner sc = new Scanner(process.getInputStream());
if (sc.hasNextLine()) sc.nextLine();
while (sc.hasNextLine()) {
String line = sc.nextLine();
System.out.println(line);
}
}).start();
process.waitFor();
System.out.println("Done");

输出是这样的:

ApplicationFrameHost 15592
chrome 12920
cmd 21104
debian 13264
Far 3968
firefox 17240
HxOutlook 4784
idea64 13644
MicrosoftEdge 8024
MicrosoftEdgeCP 13908
MicrosoftEdgeCP 14604
mstsc 24636
notepad++ 9956
OUTLOOK 9588
pycharm64 6396
rider64 10468
Teams 11540
Telegram 16760


Done

关于java - 如何获取当前正在运行的应用程序列表,如任务管理器,但使用 JAVA 在后台运行的应用程序除外?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55469548/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com