无法使用 Pywinauto 的 find_window(title="program.exe") 找到 .exe

Cannot find .exe with Pywinauto's find_window(title="program.exe")

有人知道 pywinauto 的 find_window 函数的技巧吗?我正在使用 kivy 构建一个应用程序,并尝试使用 pywinauto 将 .exe 带到前台,使用以下代码:

SetForegroundWindow(find_window(title='program.exe'))

我只是想识别当前打开的 .exe,并将其带到前台。我在这里 https://pywinauto.github.io/docs/code/pywinauto.findwindows.html 看过,似乎 "title=" 是我想要的。

有谁知道如何用pywinauto指向.exe?

我认为标题是 window 标题(即 "python - Cannot find..." 在这个选项卡的情况下),你确定它不是更像 "process='program.exe'" 吗?

如果它需要是和 int 那么它的 pid(进程 ID),你可以使用它来按标题获取进程 ID:

import win32gui,win32process
def get_window_pid(title):
    hwnd = win32gui.FindWindow(None, title)
    threadid,pid = win32process.GetWindowThreadProcessId(hwnd)
    return pid

最终得到这个答案,因为它包含非常好的 class 以获得 windows Python Window Activation,我不想复制粘贴,但使用它然后你可以做:

w = WindowMgr()
w.find_window_wildcard(".*Hello.*")
w.set_foreground()

find_window 是我不建议使用的低级函数。

正确的是 Application 对象连接到目标进程。可以这样使用:

from pywinauto import Application
app = Application(backend=“uia”).connect(path=“program.exe”)
app.WindowTitle.set_focus()

如果您有多个应用程序实例,则有一个 Desktop 对象遍历系统中的所有 windows:

from pywinauto import Desktop
Desktop(backend=“win32”).window(title=“Window Title”, found_index=0).set_focus()

您提到了 0.5.4 版本的旧文档,最新版本是 0.6.4,有两个可用后端和许多错误修复。主页上的入门指南 link 是学习主要概念的良好来源。