24,855
社区成员
发帖
与我相关
我的任务
分享
SECURITY_ATTRIBUTES sa;
HANDLE hRead,hWrite;
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = TRUE;
//创建匿名管道
if (!CreatePipe(&hRead,&hWrite,&sa,0))
{
return _T("");
}
STARTUPINFO si;
PROCESS_INFORMATION pi;
si.cb = sizeof(STARTUPINFO);
GetStartupInfo(&si);
si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
si.wShowWindow = SW_HIDE;
si.hStdError = hWrite;//数据输出用的文件句柄
si.hStdOutput = hWrite;//数据输出用的文件句柄
//FILE* lLogFile = freopen ("mylog.log","w",hWrite);
//执行cmd命令,并在命名中管道中写入cmd命令返回的串
if (!CreateProcess(NULL,cstrCmd.GetBuffer()
,NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi))
{
CloseHandle(hRead);
CloseHandle(hWrite);
return _T("");
}
CloseHandle(hWrite);
//检测到退出事件;
if(WaitForSingleObject(g_dlhThreadEvent, 0) == WAIT_OBJECT_0)
{
CloseHandle(hRead);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
return _T("检测到退出事件");
}
if( seconds != INFINITE) seconds = 1000;