首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ShellExecuteEx和捕获标准输入/输出/错误

使用ShellExecuteEx和捕获标准输入/输出/错误
EN

Stack Overflow用户
提问于 2009-01-22 13:40:19
回答 5查看 20.6K关注 0票数 10

我正在使用ShellExecuteEx在C中执行一个命令。有没有办法使用ShellExecuteEx并捕获标准的in/out/err?

注意:我不想使用CreateProcess

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-01-22 23:39:57

正如pilif和Bob所提到的,您需要使用CreateProcess

如果您想要代码为您包装所有内容,我确实有一个针对此问题的类,请访问:

http://code.google.com/p/kgui/source/browse/trunk/kguithread.cpp

这个类(kGUICallThread)处理Linux、macOS和Windows版本。该代码是经过许可的LGPL。

票数 3
EN

Stack Overflow用户

发布于 2009-03-02 06:33:29

我过去常常像你一样发现问题。

假设您希望捕获由dir命令生成的STDOUT输出,并将捕获的结果保存到out.txt中。

  1. 使用文本编辑器,键入dir > out.txt,并在c/c++程序中使用mybat.bat (*.bat,don't *.txt)
  2. 将其保存,然后键入WinExec("mybat.bat",SW_HIDE);<代码>E213,然后运行application.
  3. Open。您将看到当前目录中的文件夹和文件的名称。

此外,您还可以以与以下相同的方式运行任何可执行文件(*.exe)。

xxx.exe > out.txt

我希望它能对你有所帮助。对不起,我的英语真的不太好。

票数 8
EN

Stack Overflow用户

发布于 2009-01-22 13:44:15

这不可能。ShellExecute(Ex)基本上是在外壳的上下文中执行应用程序-所以你基本上是在做资源管理器所做的事情。

捕获STDIN和STDOUT是shell通常不会做的事情,您必须使用CreateProcess方法(毕竟,如果要执行的文件是一个程序,并且动词是‘CreateProcess’,那么这就是ShellExecute最终调用的方法)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/469152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档