我们正在Windows中构建JavaFX应用程序,我们希望能够做一些事情来操纵我们的应用程序在Windows 7/8任务栏中的显示方式.这需要修改名为“Application User Model ID”的Windows变量.
我们已经设法通过使用JNA完成了我们想要的Swing,我们想在JavaFX中重复我们的解决方案.不幸的是,要做到这一点,我们需要能够为我们的应用程序中的每个窗口检索hWnd(窗口句柄).这可以通过JNA Native.getWindowPointer()方法在Swing / AWT中完成,该方法适用于java.awt.Window,但我无法找到一个使用javafx.stage.Window执行此操作的好方法.
有没有人知道有什么方法可以获得hWnd舞台?
最佳答案
这是一个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)? - 代码日志