4
       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を使用しています。

ありがとうございました。

4

2 に答える 2

0

この質問はもともと 2012 年に行われました。関数は2014 年 6 月 29 日にインターフェイスにReadProcessMemory追加されました。つまり、関数は質問の時点ではまだマッピングされていませんでした。jna.platform.win32.Kernel32

JNA バージョン 4.2.0 以降には、関数が含まれています。

于 2017-05-15T10:39:31.613 に答える