gpt4 book ai didi

java - 在 Java Swing 中,如何获得对窗口的 Win32 窗口句柄 (hwnd) 引用?

转载 作者:IT老高 更新时间:2023-10-28 21:14:26 27 4
gpt4 key购买 nike

在 Java 1.4 中,您可以使用 ((SunToolkit) Toolkit.getDefaultToolkit()).getNativeWindowHandleFromComponent() 但已被删除。

看来您现在必须使用 JNI 来执行此操作。您有执行此操作的 JNI 代码和示例 Java 代码吗?

我需要它来调用 Win32 GetWindowLong 和 SetWindowLong API 调用,这可以通过 Jawin 库完成。

我想要一些非常精确的东西,这样我就可以传递对 JDialog 或 JFrame 的引用并获取窗口句柄。

Swing transparency using JNI可能是相关的。

最佳答案

您没有编写任何 C/JNI 代码。来自 Java:

import sun.awt.windows.WComponentPeer;

public static long getHWnd(Frame f) {
return f.getPeer() != null ? ((WComponentPeer) f.getPeer()).getHWnd() : 0;
}

注意事项:

  • 这使用了一个 sun.* 包。显然这不是公共(public) API。但它不太可能改变(而且我认为与上述解决方案相比,破坏的可能性更小)。
  • 这将仅在 Windows 上编译和运行。您需要将其转换为反射代码才能使其具有可移植性。

关于java - 在 Java Swing 中,如何获得对窗口的 Win32 窗口句柄 (hwnd) 引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/386792/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com