有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

希望重新进入发展空间;主要使用Java调用一些本机win32函数(我不希望在.NET中构建)

有人能告诉我一个地方,在那里我可以使用Java(JNI/JNA/SWIG)从不同的运行窗口中阅读标题。假设您知道要挂接的应用程序在内存空间中的什么位置


共 (1) 个答案

  1. # 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