Ciao a tutti sono riuscito a ottenere l'handle di una finestra attraverso findwindow della user32.dll, ora lo dovrei usare x un GetProcessId ma restituisce 0, posto il source aspettando un aiuto, in anticipo grazie a tutti
codice:
package ennesimaprova;
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Platform;
import com.sun.jna.Structure;
import com.sun.*;
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Pointer;
import com.sun.jna.Structure;
import com.sun.jna.examples.win32.W32API;
import com.sun.jna.ptr.ByteByReference;
import com.sun.jna.ptr.IntByReference;
/** Simple example of JNA interface mapping and usage. */
import com.sun.jna.*;
import com.sun.jna.ptr.PointerByReference;
import com.sun.jna.win32.StdCallLibrary;
/** Simple example of Windows native library declaration and
usage. */
public class Main {
public interface Kernel32 extends Library {
public boolean Beep(int frequency, int duration);
public void Sleep(int durationInMilliSeconds);
int GetProcessId(Pointer Process);
Pointer OpenProcess(int dwDesiredAccess, boolean bInheritHandle, int dwProcessId );
boolean WriteProcessMemory(Pointer hProcess,Pointer lpBaseAddress,Pointer lpBuffer,Pointer nSize,int lpNumberOfBytesWritten);
}
public interface User32 extends W32API {
public Pointer FindWindow(String winClass, String title);
User32 INSTANCE = (User32)
Native.loadLibrary("user32", User32.class, DEFAULT_OPTIONS);
}
public static void main(String[] args) throws NoSuchMethodException {
Kernel32 kernel = (Kernel32)
Native.loadLibrary("kernel32", Kernel32.class);
User32 user = User32.INSTANCE;
Pointer hwnd = user.FindWindow (null, "Prato fiorito");
System.out.println(hwnd);
int res = kernel.GetProcessId(hwnd);
System.out.println(res);
}
}
L'output è questo
Ciao a tutti