gpt4 book ai didi

java - 如何使从 Java Runtime.exec(command) 打开的程序始终在最前面

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:40:44 25 4
gpt4 key购买 nike

我们有一个在 Linux 机器上运行的全屏 java 程序。该程序始终在运行,并且是 Linux box 存在的主要原因。

我们有一堆可以通过下拉菜单打开的程序的 PDF 帮助文件。当用户单击我们通过以下方式打开 XPDF 的帮助菜单项之一时

    final Runtime rt = Runtime.getRuntime();
final String cmd = "runxpdf.sh";
rt.exec(cmd);

这一切都很好,除了如果用户在 XPDF 查看器运行时单击我们的程序,它将落后于我们的全屏程序显示。

我们希望能够做的是让 XPDF 程序始终保持在顶部,直到它关闭。这可以通过从 Java 执行程序来实现吗?

最佳答案

问题是您需要与另一个程序(窗口管理器)通信,以指示该程序保持窗口升起。

在基于 X 窗口的系统中,曾经有一个名为 wmctrl 的工具可以向当前窗口管理器发出请求和查询,前提是它是一个兼容的窗口管理器。我使用这样的工具得到了不同的结果。在大约 20 个 Linux 窗口管理器中,最受欢迎的窗口管理器在处理请求方面做得更好(也许这就是它们受欢迎的原因?)。

将桌面切换到窗口、提升和聚焦的命令是

wmctrl -i -a <Window Id>

获取窗口管理器管理的窗口列表

wmctrl -l

虽然这不能保证“始终在最前面”,但您可以编写一个 Thread 循环来检查并重新启动窗口。

至于 Windows 解决方案,其他人将不得不对此发表评论。

关于java - 如何使从 Java Runtime.exec(command) 打开的程序始终在最前面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11634269/

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