2009-07-23 12 views
6

Vous cherchez à revenir dans l'espace de développement; principalement en utilisant Java pour appeler certaines fonctions natives win32 (je ne veux pas construire en. NET) ....Comment puis-je lire le titre de la fenêtre avec JNI ou JNA?

Quelqu'un peut-il me diriger vers un endroit où je peux lire le titre à partir d'une fenêtre differnt en cours d'exécution en utilisant Java (JNI/JNA/SWIG). Supposons que vous sachiez où se trouve l'application dans laquelle vous tentez de vous connecter dans l'espace mémoire.

Répondre

9

Dans la JNA:

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

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

Pour l'utiliser:

byte[] windowText = new byte[512]; 

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

Vous aurez probablement envie d'utiliser les applications de structure appropriées pour HWND et également permettre le soutien unicode; vous pouvez trouver cette information et d'autres exemples sur la façon de le faire au JNA website.

La documentation de la fonction GetWindowText est disponible ici en MSDN.

Documentation pour la JNA est disponible à jna.dev.java.net

+8

Comment puis-je obtenir une poignée de fenêtre? – Synox