|
@@ -42,21 +42,23 @@ namespace GLOBAL
|
|
ZeroMemory(&si,sizeof(STARTUPINFO));
|
|
ZeroMemory(&si,sizeof(STARTUPINFO));
|
|
si.cb = sizeof(STARTUPINFO);
|
|
si.cb = sizeof(STARTUPINFO);
|
|
GetStartupInfo(&si);
|
|
GetStartupInfo(&si);
|
|
- //si.hStdError = hWrite;
|
|
|
|
|
|
+ si.hStdError = hWrite;
|
|
si.hStdOutput = hWrite; //新创建进程的标准输出连在写管道一端
|
|
si.hStdOutput = hWrite; //新创建进程的标准输出连在写管道一端
|
|
si.wShowWindow = SW_HIDE; //隐藏窗口
|
|
si.wShowWindow = SW_HIDE; //隐藏窗口
|
|
si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
|
|
si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
|
|
|
|
+ //si.hStdInput = GetStdHandle(STD_INPUT_HANDLE);
|
|
|
|
|
|
TCHAR szCommandLine[MAX_PATH] = {0};
|
|
TCHAR szCommandLine[MAX_PATH] = {0};
|
|
if ( lpCommandLine ) _stprintf_s(szCommandLine, _T("%s"), lpCommandLine);
|
|
if ( lpCommandLine ) _stprintf_s(szCommandLine, _T("%s"), lpCommandLine);
|
|
- if (!CreateProcess(lpApplicationName, lpCommandLine ? szCommandLine : NULL, NULL, NULL, TRUE, NULL, NULL, NULL, &si, &pi)) //创建子进程
|
|
|
|
|
|
+ if (!CreateProcess(lpApplicationName, lpCommandLine ? szCommandLine : NULL, NULL, NULL, TRUE, CREATE_NO_WINDOW, NULL, NULL, &si, &pi)) //创建子进程
|
|
{
|
|
{
|
|
MessageBox(NULL, _T("CreateProcess Failed!"), _T("提示"), MB_OK | MB_ICONWARNING);
|
|
MessageBox(NULL, _T("CreateProcess Failed!"), _T("提示"), MB_OK | MB_ICONWARNING);
|
|
return FALSE;
|
|
return FALSE;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ dprintf("进程ID=%ld", pi.dwProcessId);
|
|
// 等待进程完成退出.
|
|
// 等待进程完成退出.
|
|
- WaitForSingleObject(pi.hProcess,INFINITE);
|
|
|
|
|
|
+ WaitForSingleObject(pi.hProcess,INFINITE);
|
|
|
|
|
|
CloseHandle(hWrite); //关闭管道句柄
|
|
CloseHandle(hWrite); //关闭管道句柄
|
|
|
|
|
|
@@ -69,6 +71,7 @@ namespace GLOBAL
|
|
strStdOutput += szBuffer;
|
|
strStdOutput += szBuffer;
|
|
Sleep(100);
|
|
Sleep(100);
|
|
}
|
|
}
|
|
|
|
+ dprintf("输出内容=%s", strStdOutput.GetString());
|
|
CloseHandle(hRead);
|
|
CloseHandle(hRead);
|
|
|
|
|
|
return TRUE;
|
|
return TRUE;
|