gpt4 book ai didi

python - pywinauto 等待窗口出现并发送按键

转载 作者:太空狗 更新时间:2023-10-30 02:59:33 26 4
gpt4 key购买 nike

我正在尝试制作一个小函数,它会等到某个窗口出现,然后发送一个按键 (alt+i),我一直在尝试用 pywinauto 来做,但没有成功。根据我在文档中阅读的内容,我可以使用

pywinauto.application.WindowSpecification.Exists()

但我就是不明白如何指定我要查找的内容,我可以使用窗口标题或进程名称,但找不到很好的解释。

另外,除了pywinauto,还有更好用或者更容易使用的模块吗?我不需要做复杂的自动化,只需等待一个窗口并发送一些 key 。

编辑

好的,我找到了一个解决方案,一个永远循环的简单函数

 def auto_accept(*args):
while True:
try:
app = pywinauto.Application()
app.window_(title='Untitled - Notepad').SetFocus()
app.window_(title='Untitled - Notepad').TypeKeys("{1}{2}{3}")
except (pywinauto.findwindows.WindowNotFoundError, pywinauto.timings.TimeoutError):
pass

但现在我总是收到类似“2015-07-13 12:18:02,887 信息:在记事本中输入的文本:{1}{2}{3}”这样的警告,我无法使用警告模块,还有另一种方法可以过滤\禁用它们吗?这是一个问题,因为当我使用 py2exe 创建一个 exe 时,程序关闭后它告诉我有错误,但唯一的错误是我从 sendkeys 收到的警告。

最佳答案

您可以简单地为 WindowSpecification 对象使用 wait/wait_not 方法:

from pywinauto.application import Application
app = Application(backend="win32").start('executable')
app.WindowSpecification.wait('enabled').type_keys('%i') # % - alt, ^ - ctrl

WindowSpecification 可以设置更多细节:

app.window(title='Title', class_name='#32770')

window() 方法的所有可能参数与 for find_elements function 相同(不建议直接使用此低级函数)。

对于长时间操作,您可以为单个等待设置超时:wait('enabled', timeout=20) 或为每个 wait 全局设置超时:Timings .window_find_timeout = 10


编辑:在 import pywinauto 之后调用此代码以禁用日志记录:

import logging
logger = logging.getLogger('pywinauto')
logger.level = logging.WARNING # or higher

记录器级别:

Level Numeric value 
CRITICAL 50
ERROR 40
WARNING 30
INFO 20
DEBUG 10
NOTSET 0

关于python - pywinauto 等待窗口出现并发送按键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31367425/

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