使用CreatePipe遇到的有关问题
使用CreatePipe遇到的问题?
我是想把控制台程序的文字输出到一个文本框中,在命令行中执行"Fc.exe /?" 或 "Tdump.exe"(BCB60中的一个工具)时输出不正常,但这两个程序在VC6 IDE的工具菜单下面配置工具,都能正常输出,下面是代码:
-----------------------------------
我是想把控制台程序的文字输出到一个文本框中,在命令行中执行"Fc.exe /?" 或 "Tdump.exe"(BCB60中的一个工具)时输出不正常,但这两个程序在VC6 IDE的工具菜单下面配置工具,都能正常输出,下面是代码:
-----------------------------------
HANDLE hStdOutRd, hStdOutWr;
SECURITY_ATTRIBUTES sa;
sa.nLength = sizeof(sa);
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = TRUE;
if (!CreatePipe(&hStdOutRd, &hStdOutWr, &sa, 0))
return;
PROCESS_INFORMATION pi;
STARTUPINFO si;
memset(&si, 0, sizeof(si));
si.dwFlags = STARTF_USESTDHANDLES;
si.hStdOutput = hStdOutWr;
si.hStdError = hStdOutWr;
BOOL bRet = CreateProcess(NULL, "Fc.exe /?", NULL, NULL, TRUE, CREATE_NO_WINDOW, NULL, NULL, &si, &pi);
if (!bRet)
{
CloseHandle(hStdOutWr);
CloseHandle(hStdOutRd);
return;
}
else
{
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
}
CloseHandle(hStdOutWr);
TCHAR szBuf[4096];
DWORD dwReadBytes;
while (ReadFile(hStdOutRd, szBuf, 4095, &dwReadBytes, NULL))
{
szBuf[dwReadBytes] = '\0';
m_ctlEdit.SelSel(-1, -1);
m_ctlEdit.ReplaceSel(szBuf);
}
CloseHandle(hStdOutRd);
- 上一篇:深夜.dll调用有关问题
- 下一篇:关于vs联接sql数据库,求大神指导