我正在尝试制作一个小功能,它会等到某个窗口出现,然后发送按键(alt+i),我一直在尝试使用 pywinauto 执行此操作,但没有成功。从我可以使用的文档中读到的内容
pywinauto.application.WindowSpecification.Exists()
但我就是不明白如何指定我要查找的内容,我可以使用窗口标题或进程名称,但找不到好的解释。
另外,除了 pywinauto 之外,还有没有更简单的模块可以使用?我不需要做复杂的自动化,只需等待一个窗口并发送一些密钥。
编辑
好的,我找到了一个解决方案,一个永远循环的简单函数
 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 INFO: Typed text to the Notepad: {1}{2}{3}”这样的警告,我无法使用警告模块将它们过滤掉,还有另一种过滤\禁用它们的方法吗?这是一个问题,因为当我使用 py2exe 创建 exe 时,程序关闭后它告诉我有错误,但唯一的错误是我从 sendkeys 收到的警告。
您可以简单地使用对象的wait/wait_not方法WindowSpecification:
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()与find_elements 函数相同(不建议直接使用此低级函数)。
对于长时间操作,您可以为单个等待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 
| 归档时间: | 
 | 
| 查看次数: | 17212 次 | 
| 最近记录: |