我想阅读在任务管理器(应用程序选项卡)中运行的活动应用程序。
我试过了代码
Runtime.getRuntime().exec("tasklist.exe /nh")
正在获取活动的进程,但我需要Active应用程序,
答案 0 :(得分:0)
活动应用程序是notepad.exe。看起来您需要/需要应用程序的当前标题。这可以通过执行wmic
程序和process
命令来完成。您可以使用ProcessBuilder
和Process
在Java中执行此操作。代码改编自Detect if a process is running using WMIC:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
class WindowsUtils {
private WindowsUtils() {
}
public static String listOfProcesses()
throws IOException {
InputStream is = null;
InputStreamReader isr = null;
BufferedReader br = null;
List<String> command = new ArrayList<String>();
command.add("WMIC");
command.add("process");
try {
ProcessBuilder builder = new ProcessBuilder(command);
Process process = builder.start();
is = process.getInputStream();
isr = new InputStreamReader(is);
br = new BufferedReader(isr);
StringBuilder sw = new StringBuilder();
String line;
while ((line = br.readLine()) != null) {
sw.append(line.trim());
sw.append(System.lineSeparator());
}
return sw.toString();
} finally {
if (br != null)
br.close();
if (isr != null)
isr.close();
if (is != null)
is.close();
}
}
}
public class WmicExample {
public static void main(String[] args) throws Exception {
System.out.println(WindowsUtils.listOfProcesses());
}
}
答案 1 :(得分:0)
您可以通过使用广告素材过滤来消除您想要的内容,但不太可能完全您想要的内容&#34; weed out&#34; “应用程序”选项卡中不可能出现的流程,但您仍会看到流程信息。
尝试此命令:
tasklist /V /FI "STATUS eq RUNNING" /FI "Windowtitle ne N/A" /FI "Username eq <your username>" /FI "Memusage gt 15000"