python - 使用 python subprocess.popen ..无法阻止 exe 停止工作提示

标签 python windows subprocess

<分区>

我是 python 新手,需要一些帮助。我正在编写一个 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 对我来说是一个黑盒子,它会为我传递的某些选项生成错误提示。错误提示是标准的 Windows 提示,说 abc.exe 已停止工作,给了我 3 个选项来在线检查解决方案、关闭程序、调试程序。 现在我的问题是:有什么办法可以避免这个命令提示符吗?即有没有办法让 python 脚本抑制这个提示?

最佳答案

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它定义了许多类型的创建标志。希望这会有所帮助。

关于python - 使用 python subprocess.popen ..无法阻止 exe 停止工作提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24130623/

相关文章:

python - 如何将并行子进程的输出写入不同的文件

python - 获取 IdleX AttributeError

python - 查找并删除文件中的重复行(最快、最有效的方法)

windows - 在 Win32 GUI 应用程序中使用标准输出 : crashes if I don't have a redirect to file in arguments

c# - x32 应用程序可以使用 x64 数据库吗?

python - 终止子进程后终端文本变得不可见

python 导入模块 vs 将脚本作为 subprocess.popen 运行

python - Pandas :一个系列的真值是模棱两可的

python - keras lstm 区别无状态和有状态

windows - 如何在 Visual Studio Code 中导航回关于 *same* 文件的最后一个光标位置?