使用DOS重定位技术执行isqlw(SQL查询分析器)(二)

2014-11-24 12:15:13 · 作者: · 浏览: 1
HANDLE hWrite;
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = TRUE;
if (!CreatePipe(&hRead,&hWrite,&sa,0))
{
AfxMessageBox("创建管道失败!",MB_OK);
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;
if (!CreateProcess(NULL, cmd,NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi))
{
CloseHandle(hWrite);
CloseHandle(hRead);
AfxMessageBox("进程创建失败!\r请尝试再次编译!",MB_OK);
return "";
}
CloseHandle(hWrite);
CloseHandle(hRead);
//将结果读取出来
CString StrOutPut=ReadOutPutFile(StrSQLResult.GetBuffer(StrSQLResult.GetLength()));
SetSaveOutPut(StrOutPut);
return StrOutPut;
}


摘自 chenjieb520--两片森林的技术博客