用Pywinauto的find_window找不到.exe(title =“program.exe”)

时间:2018-02-10 16:58:20

标签: python pywinauto

有没有人知道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?

2 个答案:

答案 0 :(得分:0)

我认为标题是窗口标题(即" python - 找不到..."如果是这个标签),你确定它不再像" process =&#39 ;的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

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

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

答案 1 :(得分:0)

find_window是我不建议使用的低级功能。

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

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

如果您有多个应用实例,则有一个Desktop对象可以遍历系统中的所有窗口:

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

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