gpt4 book ai didi

java - 在 Java 应用程序中嵌入外部应用程序(或伪造它)

转载 作者:行者123 更新时间:2023-11-30 05:59:16 25 4
gpt4 key购买 nike

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

我想将 App #2 嵌入到 App #1 中,这样它看起来像是父 Java 应用程序的一部分(隐藏文件 --> 退出按钮并隐藏最小化、最大化和关闭按钮)。

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

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

最佳答案

下面的方案是独立于语言的,我已经通过这种方式将 IE 窗口嵌入到 Ruby 应用程序中:

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

    style = GetWindowLongPtr(APP_HWND, GWL_STYLE);

    样式 |= WS_CHILD;

    样式 &= ~WS_CAPTION;

    样式 &= ~WS_POPUP;

    SetWindowLongPtr(HWND, GWL_STYLE, 样式);

  • 定义窗口之间的父子关系:

    SetParent(APP_HWND, JAVA_HWND);

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

关于java - 在 Java 应用程序中嵌入外部应用程序(或伪造它),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3307320/

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