如何使用JNI或JNA读取窗口标题?

时间:2009-07-23 19:24:31

标签: java winapi java-native-interface swig jna

希望重新回到发展空间;主要使用Java来调用一些原生的win32函数(我不想在.NET中构建)....

有人可以指引我到一个可以使用Java(JNI / JNA / SWIG)从不同的运行窗口读取标题的地方。假设您将知道您尝试连接的应用程序在内存空间中的位置。

1 个答案:

答案 0 :(得分: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

获取