c++获取控制台输出

来源:互联网 发布:我叫mt配音演员淘宝 编辑:程序博客网 时间:2024/05/17 06:59
// Test.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include <conio.h>#include <stdio.h>#include <windows.h>#include <fstream>using namespace std;#define   EXECDOSCMD   "ping   www.baidu.com "   //可以换成你的命令 BOOL ExecDosCmd() { SECURITY_ATTRIBUTES   sa; HANDLE   hRead,hWrite; sa.nLength   =   sizeof(SECURITY_ATTRIBUTES); sa.lpSecurityDescriptor   =   NULL; sa.bInheritHandle   =   TRUE; if   (!CreatePipe(&hRead,&hWrite,&sa,0))   { return   FALSE; }   STARTUPINFO   si; PROCESS_INFORMATION   pi;   si.cb   =   sizeof(STARTUPINFO); GetStartupInfo(&si);   si.hStdError   =   hWrite; si.hStdOutput   =   hWrite; si.wShowWindow   =   SW_HIDE; si.dwFlags   =   STARTF_USESHOWWINDOW   |   STARTF_USESTDHANDLES; //关键步骤,CreateProcess函数参数意义请查阅MSDN if   (!CreateProcess(NULL,   EXECDOSCMD ,NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi))   { return   FALSE; } CloseHandle(hWrite); char   buffer[4096]   =   {0}; DWORD   bytesRead;   ofstream outfile("log.txt");while   (true)   { if   (ReadFile(hRead,buffer,4095,&bytesRead,NULL)   ==   NULL) break; //buffer中就是执行的结果,可以保存到文本,也可以直接输出 //printf(buffer); outfile << buffer << endl;Sleep(200);   }outfile.close();return   TRUE;}int main(){ExecDosCmd();return 0;}

原创粉丝点击