当前位置: 首页 > 面试题库 >

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

赫连冠玉
2023-03-14
问题内容

望回到发展空间;主要使用Java调用某些本地win32函数(我不希望在.NET中构建)…。

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


问题答案:

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

MSDN上提供了GetWindowText函数的文档。

JNA的文档可从jna.dev.java.net获得。



 类似资料:
  • 问题内容: 我是JNA的新手。我试图获取所有窗口的句柄,包括最小化的窗口。我需要所有的窗户。我遇到了Windows问题:如何获取所有可见窗口的列表?这帮助我获得了Windows列表,但是它的类型为int。我不能与要求type的函数一起使用。那么,有什么方法可以获取类型而不是int指针的所有窗口句柄?最后,为什么和?它如何接受两者?我有点困惑。谢谢。 我有以下代码(从Hovercreft的答案中编辑

  • 我想在Java使用JNA调用Linux mount命令,并从调用结果填充一个装入点列表,但无法理解接口方法的实际返回类型应该是什么。 如果我使用int,那么它将没有任何错误地打印-1。我认为这是某种错误的迹象。 } 我尝试使用基于以下文档的不同返回类型,但没有任何工作。 默认类型映射 我想我的问题是基于错误的签名 我的库有时会导致VM崩溃:仔细检查导致崩溃的方法的签名,以确保所有参数的大小和类型都

  • 我们有一个本机< code>c/asm应用程序,它利用GPU(OpenCL)通过特定的方法对大量< code >数据进行加密/解密,它运行得非常完美,没有任何问题。该项目的一部分(网络和分发)正在由< code>JEE开发,我们只需要调用原生应用程序/库。 我们已经尝试使用类将其称为分离的外部进程。问题是我们无法控制应用程序(事件、处理程序、线程等…)。我们还尝试将C代码切换为Java代码,但性能

  • 问题内容: 我需要将注意力集中在指定的窗口上,而我头上看到的唯一方法是将其前面的所有窗口最小化,直到找到正确的窗口为止。 我该怎么做? Windows 7,没有特定的工具包…。 每种类型的窗口,例如,firefox和控制台命令 问题答案: 您需要通过窗口枚举并匹配窗口标题才能获得所需的窗口。下面的代码搜索标题为“ firefox”的窗口并设置焦点: 为了最小化窗口,下面的行:

  • 本文向大家介绍如何使用JSP读取HTTP标头?,包括了如何使用JSP读取HTTP标头?的使用技巧和注意事项,需要的朋友参考一下 以下是使用HttpServletRequest的getHeaderNames()方法读取HTTP标头信息的示例。此方法返回一个Enumeration,其中包含与当前HTTP请求关联的标头信息。 一旦有了枚举,就可以以标准方式循环枚举。我们将使用hasMoreElement

  • 我对python和Splint是新手。我阅读了关于splinter的文档,但它没有提到selenium库中关于switch_to like的任何内容。 当我运行这段代码时,我得到一个错误。 任何想法都欢迎。谢了!