2009-07-23 65 views
6

尋找回到發展空間;主要使用Java調用一些本地Win32函數(我並不想打造.NET)....如何使用JNI或JNA讀取窗口標題?

有人點我到一個地方,我可以閱讀使用Java從不同的充運行窗口標題( JNI/JNA /痛飲)。假設你會知道你試圖掛入的應用程序在內存空間的哪個位置。

回答

9

在JNA:

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

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

要使用它:

byte[] windowText = new byte[512]; 

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

你可能要使用HWND適當的結構映射,也允許Unicode支持;你可以找到這些信息,以及如何做到這一點的JNA website更多的例子。

的GetWindowText函數功能的文檔可以在這裏MSDN

JNA的文檔可在jna.dev.java.net

+8

我怎樣才能得到一個窗口句柄? – Synox 2011-03-04 15:25:09