java windowsapi_Java操作windows API

使用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 写入

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值