小智 7
我用来发现像你这样的问题.
假设,您希望从STDOUT捕获由dir命令生成的输出,并将捕获的内容保存到out.txt中.
使用文本编辑器并键入dir> out.txt并使用mybat.bat保存(*.bat,不要*.txt)
在你的c/c ++程序中,输入WinExec("mybat.bat",SW_HIDE); 并运行您的应用程序.
打开out.txt,您将看到当前目录中的文件夹和文件的名称.
此外,您可以按照以下相同的方式运行任何可执行文件(*.exe).
xxx.exe> out.txt
我希望它可以帮助你.对不起,我的英语真不好.
那是不可能的。ShellExecute( Ex) 基本上在 shell 上下文中执行应用程序 - 因此您基本上正在执行资源管理器所做的事情。
捕获 STDIN 和 STDOUT 是 shell 通常不会做的事情,你必须走这CreateProcess条路(毕竟,ShellExecute如果要执行的文件是一个程序并且动词是“打开”,那么最终会调用它)。
正如 pilif 和 Bob 提到的,您需要使用CreateProcess.
如果您想要为您包装所有内容的代码,我确实有一个针对此确切问题的课程,网址为:
http://code.google.com/p/kgui/source/browse/trunk/kguithread.cpp。
类 ( kGUICallThread) 处理 Linux、macOS 和 Windows 版本。该代码已获得 LGPL 许可。
| 归档时间: |
|
| 查看次数: |
16727 次 |
| 最近记录: |