Runtime.exec方法之获取process id

2020-10-19  本文已影响0人  xintop

第一步:导入一个jna-4.1.0.jar,对应的maven如下:

<dependency>
    <groupId>net.java.dev.jna</groupId>
    <artifactId>jna</artifactId>
    <version>4.1.0</version>
</dependency>

第二步:然后新建一个接口Kernel32,代码如下:

public interface Kernel32 extends Library {  
    public static Kernel32 INSTANCE = (Kernel32) Native.loadLibrary("kernel32", Kernel32.class);  
    public long GetProcessId(Long hProcess);  
} 

第三步:编写测试类


public class Test1 {  
    public static void main(String[] args) throws Exception {  
        Runtime r = Runtime.getRuntime();  
        long pid = -1;  
        try {  
            Process process = r.exec("D:\\Program Files\\DBeaver\\dbeaver.exe");  
            Field field = process.getClass().getDeclaredField("handle");  
            field.setAccessible(true);  
            pid = Kernel32.INSTANCE.GetProcessId((Long) field.get(process));  
            System.out.println(pid);  
        } catch (Exception ex) {  
            ex.printStackTrace();  
        }         
    }  
}
上一篇 下一篇

猜你喜欢

热点阅读