如何在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 hWnd
的Stage
?
回答:
这是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