防止从 python 运行 exe 时弹出窗口

问题描述 投票:0回答:1

我正在使用 python 批量运行使用

subprocess.run()
函数为 Windows 操作系统编译的科学应用程序 (DNDC):

import subprocess

subprocess.run(r'root_path_to_dndc/exe/console/DNDC95.exe -s path_to_input.txt -output path_to_output -root root_path_to_dndc')

DNDC 偶尔会弹出一个窗口,显示一些错误消息,这些消息阻止 python 代码继续运行,直到我手动单击“确定”按钮继续。有没有什么方法可以捕获错误消息然后终止进程?这很重要,因为我需要运行最后一个代码很多次(> 100k)。

我尝试在代码中设置

try, except
块,但问题是当 DNDC .exe 成功启动时,Python 没有检测到错误。因此,我需要弄清楚如何捕获 DNDC 触发的错误消息窗口。

详情:

  • 批处理脚本是用Python 3.12编写的。
  • 批处理脚本使用“wine”应用程序在远程操作系统 Unix 服务器上运行。
  • 我在服务器上没有管理员权限(无法运行Disable-WindowsErrorReporting)
  • DNDC 是一个科学应用程序(用于碳循环模拟),可从 github 获取 (https://github.com/BrianBGrant/DNDCv.CAN/blob/master/DNDC_Jan2024.zip)

感谢您的帮助。

python subprocess exe
1个回答
0
投票

我会尝试找到错误对话框的窗口名称,并定期使用另一个进程中的该名称“评估打开的窗口”。如果找到,则使用窗口信息找到其进程并杀死它(或 SendKeys(" “))。

我知道它可以在 Windows 中完成,并且我相信它也应该在 wine 下工作。

© www.soinside.com 2019 - 2024. All rights reserved.