void CDlgTestDlg::OnBnClickedOk() { SECURITY_ATTRIBUTES sa; HANDLE hRead,hWrite; sa.nLength=sizeof(SECURITY_ATTRIBUTES); sa.bInheritHandle=TRUE; if(!CreatePipe(&hRead,&hWrite,&sa,0)) { DWORD dErr=GetLastError(); CString szInfo; szInfo.Format(_T("Fail to Create Pipe Error: %d"),dErr); MessageBox(szInfo); return; } 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; TCHAR szCommand[]=_T("cmd.exe /c dir /?"); if(!CreateProcess(NULL,szCommand,NULL,NULL,TRUE,NULL,NULL,NULL,&si,π)) { MessageBox(_T("Fail to create process")); return; } CloseHandle(hWrite); char buffer[4096]={0}; DWORD bytesRead; if(ReadFile(hRead,buffer,4096,&bytesRead,NULL)==NULL) { return ; } else { TCHAR szShow[4096]; MultiByteToWideChar(CP_ACP,NULL,buffer,4096,szShow,4096); GetDlgItem(IDC_STATIC)->SetWindowText(szShow); } // __super::OnOK(); } 这些内容来来自于:http://hi.baidu.com/welflau/blog/item/0bc1b8b7e80ceaf031add192.html 只是我个人作了修改。 结果是这样的。大家可以参考一下。