我希望通过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
跳过所有提示?
Python 2.7.6
答案 0 :(得分:1)
子进程只能启动其他进程。它无法告诉其他进程如何处理(除了允许您通过STDIN传递数据)。
dxdiag在子进程'控制领域之外 - 内部生成那些对话框。
可靠地阻止它的唯一方法是找出弹出的对话框并找到特定于dxdiag的标志以禁用该对话框(如果存在)。