如何在Java中从windowHandle获取processId?

iyr7buue  于 2023-01-29  发布在  Java
关注(0)|答案(1)|浏览(155)

在Java中,从windowHandle获取进程ID是否可行,反之亦然?
我们可以选择从Java中的windowHandle获取线程

User32.INSTANCE.GetWindowThreadProcessId(desktopWindow.getHWND(),null);

但如何将此线程与processId关联起来

hs1rzwqc

hs1rzwqc1#

GetWindowThreadProcessId开始
[out,可选] lpdwProcessId
类型:语言
指向接收进程标识符的变量的指针。如果此参数不为NULL,GetWindowThreadProcessId将进程的标识符复制到变量;否则,它不工作。
换句话说,传递一个IntByReference,然后获取它的值。例如(省略错误检查):

IntByReference lpdwProcessId = new IntByReference();
User32.INSTANCE.GetWindowThreadProcessId(desktopWindow.getHWND(), lpdwProcessId);
Optional<ProcessHandle> processHandle = ProcessHandle.of(lpdwProcessId.getValue());

相关问题