我这里有我的代码片段:
ArrayList<String> cmd_exec_installer = new ArrayList<String>();
cmd_exec_installer.add("file.exe");
Process proc = new ProcessBuilder(cmd_exec_installer).start();
我想要做的是让流程的PID开始执行file.exe
。
有没有办法在Java中做到这一点?
答案 0 :(得分:1)
这在Windows 7上完全适用于我:
//Imports
import com.sun.jna.*;
import com.sun.jna.platform.win32.Kernel32;
import com.sun.jna.platform.win32.WinNT;
private String getWindowsProcessId(Process proc)
{
if (proc.getClass().getName().equals("java.lang.Win32Process")
|| proc.getClass().getName().equals("java.lang.ProcessImpl")) {
try {
Field f = proc.getClass().getDeclaredField("handle");
f.setAccessible(true);
long handl = f.getLong(proc);
Kernel32 kernel = Kernel32.INSTANCE;
WinNT.HANDLE handle = new WinNT.HANDLE();
handle.setPointer(Pointer.createConstant(handl));
return Integer.toString(kernel.GetProcessId(handle));
} catch (Throwable e) {
}
}
return "";
}
来源:http://cnkmym.blogspot.com/2011/10/how-to-get-process-id-in-windows.html
答案 1 :(得分:0)