【问题标题】:How can I read the window title with JNI or JNA?如何使用 JNI 或 JNA 读取窗口标题?
【发布时间】:2010-11-13 12:30:30
【问题描述】:

希望重返开发领域;主要是使用 Java 调用一些原生的 win32 函数(我不想在 .NET 中构建)....

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

【问题讨论】:

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


    【解决方案1】:

    在 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 获得

    【讨论】:

    • 如何获得窗口把手?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-26
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 2012-02-25
    相关资源
    最近更新 更多