在窗口应用程序上获取命令执行的输出

Getting output of command execution on windowed app

我已经创建了一个 Python 脚本并使用 PyInstaller 将其编译成一个 exe 文件。在此过程中,我指定了 -w 选项来获取没有任何控制台的应用程序。

除了使用 popen 执行命令外一切正常:

mout = subprocess.Popen(['ls','C:\'])

此行生成异常 [Error 6] The handle is invalid

我试过添加参数 stdout=subprocess.PIPE, stderr=subprocess.PIPE 但它仍然无法正常工作。我认为这是因为主进程没有分配任何控制台。我想执行命令但不打开任何 shell,它必须对用户透明。

有什么选择吗?

这应该可以解决您的问题。

proc = subprocess.Popen(['ls','C:\'], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE, creationflags=CREATE_NO_WINDOW)