Kernel32.INSTANCE.ReadProcessMemory не может быть найден в JNA

       import com.sun.jna.Native;
       import com.sun.jna.Memory;
       import com.sun.jna.Pointer;
       import com.sun.jna.ptr.*;
       import com.sun.jna.platform.win32.Kernel32;
       import com.sun.jna.platform.win32.User32;
       import com.sun.jna.platform.win32.WinDef;
       import com.sun.jna.platform.win32.WinDef.HWND;
       import com.sun.jna.platform.win32.*;


public class apples {


       public static void main(String[] args) {

           IntByReference pid = new IntByReference();
           int offset = 0x7AF5DBDC;
           int buffer = 32;
           Memory output = new Memory(buffer);

HWND hwnd = User32.INSTANCE.FindWindow("notepad", null);   
    if (hwnd != null)
    {
    System.out.println("i got the handle");
    User32.INSTANCE.GetWindowThreadProcessId(hwnd, pid);
    System.out.println("PID is " + pid.getValue());
    WinNT.HANDLE hProc =  Kernel32.INSTANCE.OpenProcess(0, false, pid.getValue());

    Output: 
    i got the handle
    PID is 752

Далее я хочу использовать Kernel32.INSTANCE.ReadProcessMemory();

Однако я не могу найти функцию в Kernel32. Эту функцию убрали? Если да, то есть ли другой способ сделать ReadProcessMemory?

Я использую Java и использую JNA Lib.

Спасибо.


person user1853830    schedule 26.11.2012    source источник
comment
Если он отсутствует, вы всегда можете расширить интерфейс и определить свой собственный.   -  person technomage    schedule 28.11.2012


Ответы (2)


Возможно, вам потребуется определить экземпляр Kernel32 перед вызовом его функций.

Kernel32 kernel32 = (Kernel32) Native.loadLibrary(Kernel32.class, W32APIOptions.UNICODE_OPTIONS);
int memValue = kernel32.ReadProcessMemory(WinNT.HANDLE, pointer, pointer, int, IntByReference);
person pheamit    schedule 14.12.2015

Первоначально вопрос был задан в 2012 году. Функция ReadProcessMemory была добавлена ​​в интерфейс jna.platform.win32.Kernel32 на 29 июня 2014 г., что означает, что на момент запроса функция еще не была сопоставлена.

Версии JNA 4.2.0 и выше поставляются с включенной функцией.

person cbr    schedule 15.05.2017