2009-07-23 6 views
6

Cercando di tornare nello spazio di sviluppo; principalmente usando Java per chiamare alcune funzioni native win32 (non desidero creare in .NET) ....Come posso leggere il titolo della finestra con JNI o ​​JNA?

Qualcuno può indicarmi un luogo in cui posso leggere il titolo da una finestra in esecuzione diversa usando Java (JNI/JNA/SWIG). Supponiamo che tu sappia dove si trova nello spazio di memoria l'applicazione che stai tentando di collegare.

risposta

9

In JNA:

public interface User32 extends StdCallLibrary { 
    User32 INSTANCE = (User32) Native.loadLibrary("user32", User32.class); 

    int GetWindowTextA(PointerType hWnd, byte[] lpString, int nMaxCount); 
} 

usarlo:

byte[] windowText = new byte[512]; 

PointerType hwnd = ... // assign the window handle here. 
User32.INSTANCE.GetWindowTextA(hwnd, windowText, 512); 
System.out.println(Native.toString(windowText)); 

probabilmente si vorrà utilizzare le mappature struttura adeguata per HWND e permettono anche il supporto unicode; è possibile trovare tali informazioni e altri esempi su come farlo al JNA website.

La documentazione per la funzione GetWindowText è disponibile qui in MSDN.

documentazione per JNA è disponibile presso jna.dev.java.net

+8

come posso ottenere un handle di finestra? – Synox