获取命令行程序的输出
2009-07-10 19:52
513 查看
原帖地址:http://topic.csdn.net/u/20090709/15/295b6a69-0901-4b24-811b-034c64aca131.html
就是使用管道接收来自命令行输出
代码如下:
就是使用管道接收来自命令行输出
代码如下:
SECURITY_ATTRIBUTES sa; HANDLE hRead,hWrite; sa.nLength = sizeof(SECURITY_ATTRIBUTES); sa.lpSecurityDescriptor = NULL; //使用系统默认的安全描述符 sa.bInheritHandle = TRUE; //创建的进程继承句柄 if (!CreatePipe(&hRead,&hWrite,&sa,0)) //创建匿名管道 { MessageBox("CreatePipe Failed!","提示",MB_OK | MB_ICONWARNING); return; } STARTUPINFO si; PROCESS_INFORMATION pi; ZeroMemory(&si,sizeof(STARTUPINFO)); si.cb = sizeof(STARTUPINFO); GetStartupInfo(&si); si.hStdError = hWrite; si.hStdOutput = hWrite; //新创建进程的标准输出连在写管道一端 si.wShowWindow = SW_HIDE; //隐藏窗口 si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES; char cmdline[200]; CString tmp,stredit2; GetDlgItemText(IDC_EDIT2,stredit2); //获取编辑框中输入的命令行 tmp.Format("cmd /C %s",stredit2); sprintf(cmdline,"%s",tmp); if (!CreateProcess(NULL,cmdline,NULL,NULL,TRUE,NULL,NULL,NULL,&si,π)) //创建子进程 { MessageBox("CreateProcess Failed!","提示",MB_OK | MB_ICONWARNING); return; } CloseHandle(hWrite); //关闭管道句柄 char buffer[4096] = {0}; CString strOutput; DWORD bytesRead; while (true) { if (ReadFile(hRead,buffer,4095,&bytesRead,NULL) == NULL) //读取管道 break; strOutput += buffer; SetDlgItemText(IDC_EDIT1,strOutput); //显示输出信息到编辑框,并刷新窗口 UpdateWindow(); Sleep(100); } CloseHandle(hRead);
相关文章推荐
- WinExec 运行一个命令行程序,怎么获取其输出的内容?
- 【转】C#执行命令行程序/命令并获取输出结果
- C# 编写命令行交互工具——实时输出_获取执行结果
- VC中调用并获取外部程序输出
- Python 获取命令行输出
- MFC窗口程序显示命令行输出窗口的方法
- 【c/c++】如何调用【linux】shell命令行命令并获取命令行的输出内容
- Delphi通过管道执行外部命令行程序(cmd)并获取返回结果
- win32/vc 程序调试信息命令行输出
- popen——C程序中获取Shell命令的输出
- linux C程序中获取shell脚本输出
- MFC及控制台窗口程序获取命令行传过来的参数的方法
- linux c程序中获取shell脚本输出
- 调试秘笈--MessageBox()格式化输出,windows程序支持命令行输出
- linux c程序中获取shell脚本输出
- Java:程序执行流程+命令行获取命令
- 题目:使用命令行参数编写一个程序,其功能是将任意一个正整数m变换为指定的n 进制数串输出。命令行的格式为:
- 程序从命令行接收多个数字,求和之后输出结果。
- linux c程序中获取shell脚本输出
- linux C程序中获取shell脚本输出(如获取system命令输出)