Pywinauto找到进程窗口并将其聚焦

时间:2017-05-27 09:24:55

标签: python user-interface window pywinauto

我目前的情况是我打开一个进程,该进程在一个随机位置打开(这就是这个过程的工作原理)。

我有进程PID,所以我需要以某种方式聚焦此窗口,并将其移动到我的屏幕中心。 我做错了,因为我甚至无法专注于那个窗口......尝试使用不同的应用程序并得到相同的结果......

我选择窗口的方式 -

appl = pywinauto.application.Application()               
appl.connect(process=824)
app_dialog = appl.top_window_()
app_dialog.Minimize()
app_dialog.Maximize()

##app_dialog.SetFocus() ##doesn't work aswell
##pywinauto.win32functions.SetForegroundWindow(app_dialog)## doesn't work

感谢阅读:)

2 个答案:

答案 0 :(得分:0)

不能说为什么它不能与pywinauto一起工作...... 得到它与win32gui一起作为答案 - Python Window Activation

长而有效;)

答案 1 :(得分:0)

方法app_dialog.set_focus()应该在pywinauto 0.6.2中有效。如果没有,它可能是一个错误。您的申请是否以某种方式公开发布?我想在我身边重现它。您是否正在尝试激活背景窗口,而在其上面有模态对话框?

第二种情况是SetForegroundWindow(...)的错误用法。它应该提供一个句柄,但是你传递WindowSpecification对象app_dialog。正确的方法如下:

handle = app_dialog.wrapper_object().handle
pywinauto.win32functions.SetForegroundWindow(handle)