我有一个Java应用程序,它将在Windows 7上运行(使用Swing,App#1)作为全屏(但不是独占模式)。我有另一个应用程序(App#2),它显示GUI以通过串行端口配置外部设备,即我没有源代码,无法改变。

我想在app#1内嵌入应用程序#2,这样它看起来就像是父java应用程序的一部分(隐藏文件 - >退出按钮并隐藏最小化,最大化和关闭按钮)。< / p>

如果在Java应用程序中不可能进行这种集成,我将使用Java打开进程并仅监控它以保持打开状态。它需要将窗口设置为“始终在顶部”,因为App#1是全屏和隐藏的外部MS Windows UI,尽可能欺骗用户认为它不是外部应用程序。是否有某种方法是使用JNI或其他东西来管理另一个进程窗口(屏幕位置,标题栏,最小化,最大化,最大化,关闭按钮可见性)和处理状态,从我的Java应用程序中进行?

如果需要,我很乐意提供更多信息。

有帮助吗?

解决方案

以下方案是语言独立的,我已经设法将IE窗口嵌入到Ruby应用程序中:

  • 首先,更改外部应用程序窗口的样式(您可以使用JNA来调用WinAPI):

    style= getWindowlongptr(app_hwnd,gwl_style);

    style |= ws_child;

    样式&=〜ws_caption;

    样式&=〜ws_popup;

    setwindowlongptr(hwnd,gwl_style,style);

  • 在Windows之间定义父子关系:

    setparent(app_hwnd,java_hwnd);

  • 侦听移动/调整Java窗口的大小事件,并在子窗口上应用新职位。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top