Python / Windows,防止子进程(外部程序)显示弹出窗口

时间:2013-11-18 11:58:38

标签: python windows hide subprocess

Python 2.7

操作系统:Windows(程序将始终在Windows上运行,因此交叉兼容性不是问题)

我被迫使用外部应用程序作为验证过程的一部分,并且我遇到了隐藏弹出窗口的麻烦,这些窗口是该外部程序的输出。

基本上我这样做:

    args = [ "-A" + param_a, "-B" + param_b, "-C" + param_c ]

    startupinfo = subprocess.STARTUPINFO()
    startupinfo.dwFlags |= subprocess._subprocess.STARTF_USESHOWWINDOW
    startupinfo.wShowWindow = subprocess._subprocess.SW_HIDE

    process = Popen(["C:\external_app.exe", args[0],args[1],args[2]], startupinfo=startupinfo, shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

    (output, err) = process.communicate()
    exit_code = process.wait()
    print exit_code

代码有效,但是当缺少参数或参数无效时,外部程序会输出一个弹出窗口,其中包含相应的消息和一个“确定”按钮,需要单击该按钮才能继续。

在代码中,我还包括了阻止 发生的所有尝试。

我知道必须有一种方法来禁用此行为,因为程序可以作为独立的Windows任务工作,并且不会被任何这些消息中断。

也许在Python或Windows本身中有一种模拟方法? 或者也许有一种方法可以自动确认应用程序的所有崩溃对话框弹出窗口?

任何解决方案都可以。

谢谢, 彼得

PS。我也试过联系这个应用程序的原作者,但该公司甚至没有...也试图猜测一个可选的参数,如-hidden等,但没有任何运气。

0 个答案:

没有答案