如何在JavaFX中获取舞台的窗口句柄(hWnd)?

我们正在Windows中构建JavaFX应用程序,我们希望能够做一些事情来操纵我们的应用程序在Windows

7/8任务栏中的显示方式。这需要修改Windows变量,称为“ 应用程序用户模型ID ”。

我们已经通过使用JNA设法完全完成了我们在Swing中想要的工作,并且我们想在JavaFX中重复我们的解决方案。不幸的是,要做到这一点,我们需要能够为hWnd应用程序中的每个窗口检索(窗口句柄)。这可以通过JNA

Native.getWindowPointer()方法在Swing

/ AWT中完成,该方法可以使用java.awt.Window,但我不知道使用来实现此目的的好方法javafx.stage.Window

有没有什么办法任何人都知道做GET hWndStage

回答:

这是JavaFX2版本(使用Stage而不是Window):

private static Pointer getWindowPointer(Stage stage) {

try {

TKStage tkStage = stage.impl_getPeer();

Method getPlatformWindow = tkStage.getClass().getDeclaredMethod("getPlatformWindow" );

getPlatformWindow.setAccessible(true);

Object platformWindow = getPlatformWindow.invoke(tkStage);

Method getNativeHandle = platformWindow.getClass().getMethod( "getNativeHandle" );

getNativeHandle.setAccessible(true);

Object nativeHandle = getNativeHandle.invoke(platformWindow);

return new Pointer((Long) nativeHandle);

} catch (Throwable e) {

System.err.println("Error getting Window Pointer");

return null;

}

}

以上是 如何在JavaFX中获取舞台的窗口句柄(hWnd)? 的全部内容, 来源链接: utcz.com/qa/424520.html

回到顶部