【问题标题】:Python - check status of "Ok" or "Cancel" box in WindowsPython - 检查 Windows 中“确定”或“取消”框的状态
【发布时间】:2016-12-01 11:35:48
【问题描述】:

我正在使用 Python 来自动化一个冗长而无聊的过程,并借助自动化无聊的东西。我本质上是用它作为一个宏来完成我的工作,使用一系列 Pyautogui 命令来使用程序创建 PDF,然后使用 PyPDF2 将它们整理出来。它是为不同的机场创建性能文件。然而,不同的机场有不同数量的跑道,因此需要不同的时间来完成。

那么,有没有办法等到下面显示的“确定”框可用 Python 按下?

Cancel

Ok

目前我只是采用最坏的情况并暂停脚本,以显示跑道最多的机场所需的时间(大约 90 秒),但是有些机场在 10 秒内完成,所以有很多时间浪费在这里。

        time.sleep(15)
        pyautogui.press('enter')

【问题讨论】:

    标签: python macros pyautogui


    【解决方案1】:

    所以,我发现很难找到一种方法来检查按钮是否可以按下(取消或确定)。相反,我寻找其他指示计算完成的指标。我遇到了 winGuiAuto,它具有一些非常有用的功能,可以从窗口中提取文本和其他内容。

    winGuiAuto

    需要两个工具 - 如问题所示找到窗口的 hwnd,然后拉出文本。这些是

    findTopWindow
    dumpWindow
    

    作为一个例子,我在程序运行和完成后显示了窗口的输出。

    跑步:

    [[3736670, 'OK', 'Button'], [1180838, 'Cancel', 'Button'], [3737440, 'Calculating:  EGCC 05LAFTMP', 'Static'], [1050590, 'Start Calc:', 'Static'], [3999714, 'End Calc:', 'Static'], [4392774, 'Total Calc:', 'Static'], [8390102, 'Status:', 'Static'], [6489324, 'Calculation Time', 'Button'], [7997044, '12:47:02', 'Static'], [9242260, '12:47:11', 'Static'], [4589322, '', 'Static'], [4851642, 'Progress1', 'msctls_progress32'], [2885686, '--', 'Static']]
    

    已完成:

    [[3736670, 'OK', 'Button'], [1180838, 'Cancel', 'Button'], [3737440, 'Calculation Finished.', 'Static'], [1050590, 'Start Calc:', 'Static'], [3999714, 'End Calc:', 'Static'], [4392774, 'Total Calc:', 'Static'], [8390102, 'Status:', 'Static'], [6489324, 'Calculation Time', 'Button'], [7997044, '12:47:02', 'Static'], [9242260, '12:48:05', 'Static'], [4589322, '00:01:03', 'Static'], [4851642, 'Progress1', 'msctls_progress32'], [2885686, '/', 'Static']]
    

    如您所见,“正在计算:”变成了“计算完成”。

    解决方案是实现一个检查语句,该语句仅在计算完成后才允许宏继续进行。

            hwnd = findTopWindow('Calculating')
    
            while True:
                data = dumpWindow(hwnd)
                if data[2][1] == 'Calculation Finished.':
                    break`enter code here`
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-28
      • 2012-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      相关资源
      最近更新 更多