subprocess.call - 无尽的等待命令完成

时间:2014-02-24 06:25:42

标签: python directx subprocess

我希望通过dxdiag在Windows上获取显示卡信息,因此我使用了以下代码:

import os, sys, subprocess

b = open(os.environ["TMP"] +"\\dx_info.bat", "w")
cmd = r'''@ECHO OFF
SETLOCAL
dxdiag /x dx_temp.xml
DEL "%~f0"'''
b.write(cmd)
b.close()

os.chdir(os.environ["TMP"])

subprocess.call([os.environ["TMP"] +"\\dx_info.bat"])

此脚本在%Temp%中创建一个bat文件,然后运行它并等待命令完成并创建dx_temp.xml。但在某些PC中,运行dxdiag后,会出现一个提示对话框,使命令继续运行。在这种情况下,无休止地等待命令完成。如何强制subprocess.call跳过所有提示?

在Windows 8上

Python 2.7.6

1 个答案:

答案 0 :(得分:1)

子进程只能启动其他进程。它无法告诉其他进程如何处理(除了允许您通过STDIN传递数据)。

dxdiag在子进程'控制领域之外 - 内部生成那些对话框。

可靠地阻止它的唯一方法是找出弹出的对话框并找到特定于dxdiag的标志以禁用该对话框(如果存在)。