使用python subprocess.popen..can&t;以防止exe停止工作提示

时间:2014-06-09 23:28:49

标签: python windows subprocess

我是一个蟒蛇新手,需要一些帮助。我正在编写一个python脚本来调用应用程序exe(比如说abc.exe)。我正在使用subprocess.popen来达到这个目的。例如:

r_stdout = subprocess.Popen(CommandLine,
                                  stdout = subprocess.PIPE,
                                  stderr = subprocess.PIPE).communicate()[1]

这里的CommandLine是:abc.exe -options "<optionstr>"。 abc.exe对我来说是一个黑盒子,它正在为我传递的一些选项生成错误提示。错误提示是标准的窗口&#39;提示说abc.exe已经停止工作,给我3个选项来在线检查解决方案,关闭程序,调试程序。 现在我的问题是:有没有办法避免这个命令提示符?即,有没有办法让python脚本抑制此提示?

1 个答案:

答案 0 :(得分:11)

This site似乎有解决方案。基本上,它说在脚本开头包含这个:

if sys.platform.startswith("win"):
    # Don't display the Windows GPF dialog if the invoked program dies.
    # See comp.os.ms-windows.programmer.win32
    #  How to suppress crash notification dialog?, Jan 14,2004 -
    #     Raymond Chen's response [1]

    import ctypes
    SEM_NOGPFAULTERRORBOX = 0x0002 # From MSDN
    ctypes.windll.kernel32.SetErrorMode(SEM_NOGPFAULTERRORBOX);
    CREATE_NO_WINDOW = 0x08000000    # From Windows API
    subprocess_flags = CREATE_NO_WINDOW
else:
    subprocess_flags = 0

在此之后,您将执行以下子进程:

r_stdout = subprocess.Popen(CommandLine,
                            stdout=subprocess.PIPE,
                            stderr=subprocess.PIPE,
                            creationflags=subprocess_flags).communicate()[1]

MSDN站点有一个page,它定义了许多类型的创建标志。希望这会有所帮助。