autoit 未在已编译的 python 脚本中检测到 windows

autoit doesnt detect windows in compiled python script

我正在通过 win32com.client 使用 AutoItX3.Control 检测并关闭 Windows 安全对话框 ("do you trust...")。我将 WinExist 与 window title\text 一起使用,并且在 运行 宁 python 脚本(Autoit 版本为 3.3.8.1)时它工作正常。

问题出在编译的 Python 脚本(使用 PyInstaller 编译)。未检测到 window,我无法将其关闭。当我 运行 Autoit 应用程序 (SciTE4AutoIt3) 时,它确实检测到 window。

有什么建议吗?

///// 添加更多信息: 使用以下自动选项:

Opt('WinWaitDelay', 500)
Opt('SendKeyDelay', 8)
Opt('WinTitleMatchMode', 4)
Opt('WinSearchChildren', 1)
Opt('SendKeyDownDelay', 10)
Opt('WinDetectHiddenText', 1)

另外,我运行在另一个进程上将 autoit 作为进程的一个实例 class (Process(target=handle_window_func))

您是否尝试过使用经典方法设置活动 X 选项?喜欢:

oAutoItx.AutoItSetOption("WinTitleMatchMode", 4)

而不是: oAutoItx.Opt("WinTitleMatchMode", 4)

此外,AutoItx 帮助说:"Mode 4 ("仅“为向后兼容而保留)”。 因此,请检查您的选项并选择您可以使用的最简单的选项。

尝试使用以下代码:

import pythoncom
pythoncom.CoInitialize()

这会为调用线程初始化 COM 库。

在此处查看更多信息: http://docs.activestate.com/activepython/2.5/pywin32/pythoncom__CoInitialize_meth.html

解决方法是 运行在同一个脚本中同时启用自动功能和触发弹出窗口 window 的进程,并在进程 运行 时监视弹出窗口: popup_p = Popen(*cmd_args, no_wait=True, *cmd_kwargs) while popup_p.is_running(): handle_window_func() time.sleep(1) 请注意,Popen 是 运行 和 no_wait - returns 过程,无需等待它完成。