【问题标题】:Set foreground window for Windows program running under Wine为在 Wine 下运行的 Windows 程序设置前台窗口
【发布时间】:2014-06-11 20:27:45
【问题描述】:

我正在寻找一种方法来以编程方式操作在 Wine 下在 Linux 上运行的 Windows 程序。

Linux 上是否有类似于 Windows SetWindowForeground win32 命令的东西? 一个按名称将窗口设置为前台的函数,它将与在 Linux 上的 Wine 下运行的 Windows 程序一起工作?

Doe的酒用X11吗?如果是这样,我也许可以利用这个answer,将试验并回圈

【问题讨论】:

    标签: linux winapi window wine z-order


    【解决方案1】:

    在 Linux 应用程序窗口(包括您的 wine 应用程序窗口)由桌面环境的窗口管理器 (WM) 管理。窗口管理器控制窗口的放置方式以及对窗口进行操作的控件(调整大小、最小化、最大化等)。

    不幸的是,没有标准化的窗口管理器,主要桌面环境(GNOME、KDE ​​等)已经开发了自己的窗口管理器,有些人运行独立的 WM,如 IceWM 或更奇特的平铺 WM 等。

    KDE 的 WM 叫 KWin,Gnome 的叫 Mutter,Unity 用 Compiz(我想——好久没用 Ubuntu)了。

    当 WM 在 X 会话中运行时,它可能在内部使用 X11 API 来升高和降低窗口。

    但是,大多数现代 WM 会阻止 userpace X 调用弹出窗口(出于安全考虑等),您将需要使用 WM 的包装函数。我认为 Wayland(只要它最终可用)将有一个适当的安全 API,所以这应该不是问题。

    对您的问题的简短回答是,您编写的任何程序都可能需要特定于 Windows 管理器,并且您应该查阅 WM 的文档。

    长答案 - 有一个名为 Extended Windows Manager Hints 的 freedesktop.org 标准我不确定不同 WM 与规范的一致性有多好(Gnome 和 kDE 等主要 WM 应该很好)。你感兴趣的属性是Window State (NET_WM_STATE)

    见:http://standards.freedesktop.org/wm-spec/wm-spec-1.3.html

    我希望这会有所帮助 - 我对 WM 的了解可能已经过时,但应该会引导您朝着正确的方向前进 - 自从 GLX 首次出现并且合成(摇摆不定的窗口和所有爵士乐)出现以来,我还没有真正使用过 WM时尚。

    【讨论】:

    • hmm...谢谢,我需要改写/重新提出我的问题,所以正确的问题是,是否有办法为Gnomecompiz 执行此操作,因为我正在使用ubuntu ?
    • 你可以试试像 WMctrl freedesktop.org/wiki/Software/wmctrl 这样的程序,它在 debian 中,所以应该在 Ubuntu 中。
    • 会赏金给我指出正确的方向
    【解决方案2】:

    您可以使用 X11 窗口管理器xdotool 或 X 窗口管理器wmctrl
    考虑以下场景。一个名为 WordWeb Installer 的 MS windows 应用程序在 Ubuntu 上的工作区 2 上的 wine 中运行。当前工作区:1. 切换到工作区 2 并关注 wine 应用程序执行
    wmctrl -R wordweb
    xdotool windowactivate $( xdotool search --name wordweb )

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 2015-06-15
      • 1970-01-01
      • 1970-01-01
      • 2011-11-14
      • 2011-07-21
      • 2013-06-26
      相关资源
      最近更新 更多