ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# pywinauto.application 模块 application(应用程序)模块是用户首先使用的主要模块。 开始自动化应用程序时,必须初始化Application类的实例. 然后你必需使用 [`Application.start()`](#pywinauto.application.Application.start "pywinauto.application.Application.start") 启动应用程序或使用 [`Application.connect()`](#pywinauto.application.Application.connect "pywinauto.application.Application.connect")连接到已启动的应用程序。 获得Application实例后,您可以使用以下方法之一访问该应用程序中的对话框。 ~~~ dlg = app.YourDialogTitle dlg = app.child_window(title="your title", classname="your class", ...) dlg = app['Your Dialog Title'] ~~~ 类似地,一旦你有了一个对话框,你就可以用几乎完全相同的方式从该对话框中获得一个控件。 ~~~ ctrl = dlg.YourControlTitle ctrl = dlg.child_window(title="Your control", classname="Button", ...) ctrl = dlg["Your control"] ~~~ >[info]注意 对于控件和对话框的属性访问,您不必完全拥有控件的标题,它可以与可用的对话框或控件进行最佳匹配。 >[info]另请参见 `pywinauto.findwindows.find_elements()`表示可以同时传递给: `Application.window()` 和`WindowSpecification.child_window()`的关键字参数 >[success]*异常* `pywinauto.application.AppNotConnected` 基类: `Exception` 应用程序尚未与进程相关联 >[success]*异常* `pywinauto.application.AppStartError` 基类: `Exception` 启动应用程序时出现问题 >[success]*类* `pywinauto.application.Application(backend='win32', datafilename=None)` 基类: `object` 代表一个应用程序 >`__getattribute__(attr_name)` 找到应用程序的指定对话框 >`__getitem__(key)` 查找应用程序的指定对话框 >`GetMatchHistoryItem(index)` 不应该使用 - 应用程序数据实现的一部分 >`WriteAppData(filename)` 不应该使用 - 应用程序数据实现的一部分 >`active()` 为应用程序的活动窗口返回WindowsSpecification >`connect(**kwargs)` 连接到已在运行的进程 该动作仅根据一个参数执行 **参数**: * process – 目标的进程ID * handle – 目标的窗口句柄 * path – 用于启动目标的路径 * timeout – 进程启动超时(如果指定了路径,则与此相关) >[info]另请参见 [`pywinauto.findwindows.find_elements()`](pywinauto.findwindows.html#pywinauto.findwindows.find_elements "pywinauto.findwindows.find_elements") -也可以使用关键字参数来代替**process**、**handle**或**path** >`cpu_usage(interval=None)` 返回指定秒数内的CPU使用率百分比 >`is64bit()` 如果运行进程为64位,则返回True >`is_process_running()` 检查进程是否正在运行。 可以在启动/连接之前调用。 如果进程正在运行,则返回true;否则返回false。 >`kill(soft=False)` 尝试关闭(可选)并终止应用程序 对话框可能会弹出,要求保存数据-但应用程序仍将被终止-您将无法单击按钮。只有当可以像在任务管理器中那样终止进程时,才应该使用此选项。 >`start(cmd_line, timeout=None, retry_interval=None, create_new_console=False, wait_for_idle=True, work_dir=None)` 按cmd_line指定启动应用程序 >`top_window()` 返回应用程序当前顶部窗口的WindowsSpecification >`wait_cpu_usage_lower(threshold=2.5, timeout=None, usage_interval=None)` 等待,直到进程CPU使用率百分比小于指定的阈值 >`wait_for_process_exit(timeout=None, retry_interval=None)` 等待进程退出,直到超时 如果达到超时,则引发TimeoutError异常 >`window(kwargs)` 返回应用程序的窗口 您可以指定与findwindows.find_windows相同的参数。 它将添加process参数以确保窗口来自当前进程。 >[info]参考[`pywinauto.findwindows.find_elements()`](pywinauto.findwindows.html#pywinauto.findwindows.find_elements "pywinauto.findwindows.find_elements") 用于完整的参数描述. >`windows(kwargs)` 返回应用程序的包装顶级窗口列表 >[success] `pywinauto.application.AssertValidProcess(process_id)` 如果process_id不是有效的进程ID,则引发ProcessNotFound异常 >[success] *异常* `pywinauto.application.ProcessNotFoundError` 基类: `Exception` 找不到该进程 >[success] *类* `pywinauto.application.WindowSpecification(search_criteria)` 基类: `object` 查找窗口或控件的规范 使用时会解析窗口。您还可以等待窗口的存在或不存在 >`__getattribute__(attr_name)` 此类的属性访问 如果我们已经有对话框和控件的标准,那么解析控件并返回请求的属性。 如果我们只有对话框的标准,但请求的属性是DialogWrapper的属性,则解析对话框并返回请求的属性。 否则将功能委托给`__getitem __()` - 它为控件设置了适当的标准。 >`__getitem__(key)` 允许通过项目访问权限访问对话框/控件 比如本次允许: ~~~ app['DialogTitle']['ControlTextClass'] ~~~ 用于访问对话框和控件。 这和`__getattribute __()`都使用HowTo文档中概述的规则。 >`WAIT_CRITERIA_MAP = {'exists': ('exists',), 'visible': ('is_visible',), 'enabled': ('is_enabled',), 'ready': ('is_visible', 'is_enabled'), 'active': ('is_active',)}` >`child_window(criteria)` 添加控件的条件 解决此窗口规范后,将使用它来匹配控件。 >`dump_tree(depth=None, filename=None)` 打印'标识符' 将控件及其子代的标识符打印到**depth**(如果**None**,则打印整个子树)。 >[info]注意 通过此方法打印的标识符已经是唯一的。 因此,如果您有2个编辑框,则它们的标识符中不会同时显示“Edit”。 事实上,第一个可以被称为“Edit”,“Edit0”,“Edit1”,第二个应该被称为“Edit2”。 >`exists(timeout=None, retry_interval=None)` 检查窗口是否存在,如果控件存在则返回True 参数: timeout – 等待控件存在的最长时间。默认为Timings.exists_timeout retry_interval – 检查控件是否存在此秒数。默认为Timings.exists_retry >`print_control_identifiers(depth=None, filename=None)` 打印'标识符' 将控件及其子代的标识符打印到**depth**(如果**None**,则打印整个子树)。 >[info]注意 通过此方法打印的标识符已经是唯一的。 因此,如果您有2个编辑框,则它们的标识符中不会同时显示“Edit”。 事实上,第一个可以被称为“Edit”,“Edit0”,“Edit1”,第二个应该被称为“Edit2”。 >`print_ctrl_ids(depth=None, filename=None)` 打印'标识符' 将控件及其子代的标识符打印到**depth**(如果**None**,则打印整个子树)。 >[info]注意 通过此方法打印的标识符已经是唯一的。 因此,如果您有2个编辑框,则它们的标识符中不会同时显示“Edit”。 事实上,第一个可以被称为“Edit”,“Edit0”,“Edit1”,第二个应该被称为“Edit2”。 >`wait(wait_for, timeout=None, retry_interval=None)` 等待窗口处于特定状态。 参数: * **wait_for** –等待窗口进入的状态。它可以是以下任何状态,也可以按空格组合状态。 'exists'表示窗口是有效的句柄。 'visible'表示窗口未隐藏。 'enabled'表示窗口未被禁用。 'ready'表示窗口可见并已启用。 'active'表示窗口处于活动状态 * **timeout** – 如果窗口在此秒数后未处于适当状态,则引发pywinauto.timings.TimeoutError()。 默认: pywinauto.timings.Timings.window_find_timeout. * **retry_interval** – 每次重试之间的等待时间。默认: pywinauto.timings.Timings.window_find_retry. 等待对话存在,已准备就绪,已启用且可见的示例: ~~~ self.Dlg.wait("exists enabled visible ready") ~~~ >[info]另请参见 `WindowSpecification.wait_not()` `pywinauto.timings.TimeoutError()` >`wait_not(wait_for_not, timeout=None, retry_interval=None)` 等待窗口不处于特定状态。 参数: * wait_for_not –等待窗口不在的状态。它可以是以下任何状态,也可以通过空格组合状态。 'exists'表示窗口是有效的句柄。 'visible'表示窗口未隐藏。 'enabled'表示窗口未被禁用。 'ready'表示窗口可见并已启用。 'active'表示窗口处于活动状态 * timeout – 如果窗口在此秒数之后还处于状态,则引发pywinauto.timings.TimeoutError()。 默认: pywinauto.timings.Timings.window_find_timeout. * retry_interval – 每次重试之间的等待时间。默认: pywinauto.timings.Timings.window_find_retry. 等待对话框未就绪、未启用或不可见的示例: ~~~ self.Dlg.wait_not("enabled visible ready") ~~~ >[info]另请参见 `WindowSpecification.wait()` `pywinauto.timings.TimeoutError()` >`window(criteria)` child_window()的弃用别名 >`wrapper_object()` 允许调用代码获取HwndWrapper对象 >[success]`pywinauto.application.assert_valid_process(process_id)` 如果process_id不是有效的进程ID,则引发ProcessNotFound错误 >[success] `pywinauto.application.process_from_module(module)` 用路径模块返回正在运行的进程 >[success] `pywinauto.application.process_get_modules()` 将进程列表作为元组返回(pid,exe_path) >[success] `pywinauto.application.process_module(process_id)` 返回此进程的字符串模块名称