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

发布于 2024-07-29 03:31:40 字数 148 浏览 3 评论 0原文

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

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

Looking to get back into the development space; primarily using Java to call some native win32 functions (I don't desire to build in .NET)....

Can someone point me to a place where I can read the title from a differnt running window using Java (JNI/JNA/SWIG). Assume you would know where in the memory space the application you are attempting to hook into is.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

白色秋天 2024-08-05 03:31:40

在 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 网站 找到该信息以及有关如何执行此操作的更多示例。

GetWindowText 函数的文档位于 MSDN

JNA 文档位于 jna.dev.java.net

In JNA:

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

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

To use it:

byte[] windowText = new byte[512];

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

You'll probably want to use the proper structure mappings for HWND and also allow unicode support; you can find that information and more examples on how to do that at the JNA website.

The documentation for GetWindowText function is available here in MSDN.

Documentation for JNA is available at jna.dev.java.net

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文