使用jna自带的功能进行调用
maven依赖如下:
net.java.dev.jna
jna
5.4.0
net.java.dev.jna
jna-platform
5.4.0
代码如下:
package com.fly.jna.window.util;
import com.sun.jna.Memory;
import com.sun.jna.Pointer;
import com.sun.jna.platform.win32.Kernel32;
import com.sun.jna.platform.win32.User32;
import com.sun.jna.platform.win32.WinDef.HWND;
import com.sun.jna.platform.win32.WinNT;
import com.sun.jna.platform.win32.WinNT.HANDLE;
import com.sun.jna.ptr.IntByReference;
public class WindowsUtils {
private static final Kernel32 KERNEL = Kernel32.INSTANCE;
private static final User32 USER = User32.INSTANCE;
/**
* 通过窗口名称获取句柄
* @param windowName 窗口名称
* @return 句柄
*/
public static HANDLE getHandleByWindowName(String windowName) {
HWND hwnd = USER.FindWindow(null, windowName);
IntByReference pidReference = new IntByReference();
USER.GetWindowThreadProcessId(hwnd, pidReference);
int pid = pidReference.getValue();
return KERNEL.OpenProcess(WinNT.PROCESS_ALL_ACCESS, false, pid);
}
/**
* 通过pid获取句柄
* @param pid pid
* @return 句柄
*/
public static HANDLE getHandleByPid(int pid) {
return KERNEL.OpenProcess(WinNT.PROCESS_ALL_ACCESS, false, pid);
}
/**
* 将int值写入到指定地址
* @param handle 程序句柄
* @param address 地址
* @param value 值
* @return 写入