mfc 获取命令行结果
时间: 2023-05-15 22:03:57 浏览: 154
MFC(Microsoft Foundation Classes)是一组C++的类库,开发人员可以使用它来创建Windows应用程序。获取命令行结果是MFC中的一个常见任务,下面介绍一种实现方式:
使用MFC的CString类和MFC的CStdioFile类,可以方便地获取命令行输出结果。具体步骤如下:
1. 使用CreateProcess函数执行命令行。
2. 创建一个CStdioFile对象,并调用CStdioFile的ReadString函数从管道中读取输出流。
3. 循环读取输出流,直到全部读取结束,使用CString类将结果保存。
4. 关闭CStdioFile对象和管道句柄。
下面是代码示例:
```c++
CStdioFile file;
CString strResult = _T("");
bool bRet = false;
SECURITY_ATTRIBUTES saAttr;
saAttr.nLength = sizeof(SECURITY_ATTRIBUTES);
saAttr.bInheritHandle = TRUE;
saAttr.lpSecurityDescriptor = NULL;
HANDLE hRead;
HANDLE hWrite;
if (CreatePipe(&hRead, &hWrite, &saAttr, 0)) {
STARTUPINFO si;
memset(&si, 0, sizeof(si));
si.cb = sizeof(si);
si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
si.wShowWindow = SW_HIDE;
si.hStdInput = nullptr;
si.hStdError = hWrite;
si.hStdOutput = hWrite;
PROCESS_INFORMATION pi;
bRet = CreateProcess(nullptr, _T("dir"), nullptr, nullptr, TRUE, 0, nullptr, nullptr, &si, &pi);
CloseHandle(hWrite);
if (bRet) {
file.Attach(hRead);
CString strLine;
while (file.ReadString(strLine)) {
strResult += strLine;
}
file.Close();
}
CloseHandle(hRead);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
}
```
以上就是一个获取命令行输出结果的MFC示例,读者可以根据自己实际的需求进行修改和优化。
阅读全文