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,&pi))
{
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);