UINT __cdecl ThreadProc(LPVOID lParam)
{
HWND hWnd = (HWND)lParam;
ASSERT(hWnd);
TCHAR szApp[MAX_PATH] = _T("ping www.youkuaiyun.com");
HANDLE hRead = NULL;
HANDLE hWrite = NULL;
SECURITY_ATTRIBUTES sa = {0};
sa.nLength = sizeof(sa);
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = TRUE;
if(!CreatePipe(&hRead, &hWrite, &sa, 0))
{
AfxMessageBox(_T("CreatePipe failed."));
return -1;
}
STARTUPINFO si = {sizeof(si)};
PROCESS_INFORMATION pi = {0};
si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
si.hStdOutput = hWrite;
si.hStdError = hWrite;
si.wShowWindow = SW_HIDE;
if(!CreateProcess(NULL, szApp, NULL, NULL, TRUE, NULL, NULL, NULL, &si, &pi))
{
CloseHandle(hWrite);
CloseHandle(hRead);
return -1;
}
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
CloseHandle(hWrite);
#define MAX_BUFFER 1024
char szBuf[MAX_BUFFER] = {0};
DWORD dwRead = 0;
CString strText(_T(""));
while(ReadFile(hRead, szBuf, MAX_BUFFER-1, &dwRead, NULL))
{
// strText += szBuf;
memset(szBuf, 0, sizeof(szBuf));
}
CloseHandle(hRead);
AfxMessageBox(strText);
return 0;
}使用管道来获取CMD命令的结果
最新推荐文章于 2023-10-25 11:17:02 发布
本文介绍了一个使用C++编写的Windows环境下创建Ping进程的方法。该进程通过CreatePipe和CreateProcess函数实现,并将Ping命令的输出重定向到指定窗口。文章详细展示了如何设置管道、启动信息及进程信息。
2823

被折叠的 条评论
为什么被折叠?



