【发布时间】:2017-04-09 22:06:47
【问题描述】:
我想知道如何找到另一个程序的进程 ID。 (非java)
当我开始编写我的程序时,我认为 .exe 的进程保持不变,但当我的程序失败时,我重新检查并意识到它改变了!
我从互联网上尝试了许多不同的方法,但没有一个将非 java 程序作为目标。
这是我当前的代码:
try {
System.out.println("DefaultButton Pressed");
Runtime.getRuntime().exec("taskkill /F /PID "+processID);
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("Failed to kill the process");
e.printStackTrace();
}
当我按下按钮时,此代码会尝试终止进程
我的代码试图获取 PID,但也失败了
我尝试过这个来获取 PID,但它获取了我的进程 ID (duh)。我一直在尝试将代码更改为不同的非 java 程序,但代码仍然不起作用。
String processID= ManagementFactory.getRuntimeMXBean().getName();
System.out.println("Process ID for this app = " + processID);
这又是自己抓取代码的代码。
我无法调整它来工作。
我什至可以得到另一个非 java 进程的 PID 吗?
编辑 1 这是我的新代码
Process processIdRaw;
try{
processIdRaw = Runtime.getRuntime().exec("tasklist /m | find \"<processname>" ");
System.out.println("Aquired PID");
}
catch(IOException e){
e.printStackTrace();
}
int processID = Integer.parseInt(processIdRaw);
System.out.println("PID:"+processID);
此代码在我的其他代码之前。其他代码在上述代码之后。
我认为Process 类型不适用于int processID = Integer.parseInt(processIdRaw);
我添加了.parseInt,因为我虽然它会从输出中找到数字。
之前因为Process类型而报错
【问题讨论】: