创建MFC工程,一个按钮,一个标签。添加代码
void CdemoDlg::OnBnClickedButton1()
{
HANDLE hPWrite,hPRead;
SECURITY_ATTRIBUTES sa = {0};
sa.nLength = sizeof(sa);
sa.bInheritHandle = true;
sa.lpSecurityDescriptor = NULL;
BOOL bCreate;
bCreate = CreatePipe(&hPRead,&hPWrite,&sa,0);
if(!bCreate)
{
MessageBox(_T("failed"));
return;
}
PROCESS_INFORMATION pi = {0};
STARTUPINFO si = {0};
si.cb = sizeof(si);
si.hStdInput = GetStdHandle(STD_INPUT_HANDLE);
si.hStdOutput = si.hStdError = hPWrite;
si.wShowWindow = SW_HIDE;
si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
TCHAR szCmd[MAX_PATH * 2] = {0};
GetDlgItemText(IDC_EDIT,szCmd,MAX_PATH*2);
bCreate = CreateProcess(NULL,szCmd,NULL,NULL,TRUE,0,NULL,NULL,&si,&pi);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
if(!bCreate)
{
CloseHandle(hPWrite);
CloseHandle(hPRead);
MessageBox(_T("failed"));
}
else
{
CString str;
CloseHandle(hPWrite);
TCHAR szBuff[4096];
DWORD dwRead;
while(TRUE)
{
memset(szBuff,0,sizeof(szBuff));
if(!ReadFile(hPRead,szBuff,4096,&dwRead,NULL))
break;
str += szBuff;
SetDlgItemText(IDC_EDIT2,str);
}
CloseHandle(hPRead);
}
}