我想知道如何找到另一个程序的进程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
答案 0 :(得分:0)
我找不到让PID工作的方法,但是!
Runtime.getRuntime().exec("taskkill /F /IM <processname>.exe")
作品!
try {
System.out.println("DefaultButton Pressed");
Runtime.getRuntime().exec("taskkill /F /IM <processname>");
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("Failed to kill the process");
e.printStackTrace();
}
查找进程名称
1:运行要杀死的程序
2:运行CMD
3:运行命令tasklist
4:抓取进程名称