首先,我对 C++ 很陌生。
我想要完成以下任务:
- 执行以下命令:“SampleApp.exe -cf test.xml”
- 我需要以隐藏模式执行的 shell
- 我需要 C++ 应用程序等到 SampleApp 完成
- 如果 SampleApp 花费的时间超过 X,那么我需要终止该过程
- 我想将 SampleApp 的输出通过管道传输到文件 (sample.log)
到目前为止,我有以下内容:
SHELLEXECUTEINFO lpExecInfo;
lpExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
lpExecInfo.lpFile = L"SampleApp.exe";
lpExecInfo.fMask = SEE_MASK_DOENVSUBST|SEE_MASK_NOCLOSEPROCESS;
lpExecInfo.hwnd = NULL;
lpExecInfo.lpVerb = L"open";
lpExecInfo.lpParameters = L"-cf test.xml";
lpExecInfo.lpDirectory = NULL;
lpExecInfo.nShow = SW_HIDE; // hide shell during execution
lpExecInfo.hInstApp = (HINSTANCE) SE_ERR_DDEFAIL;
ShellExecuteEx(&lpExecInfo);
// wait until the process is finished
if (lpExecInfo.hProcess != NULL)
{
::WaitForSingleObject(lpExecInfo.hProcess, INFINITE);
::CloseHandle(lpExecInfo.hProcess);
}
上面的代码实现了除了管道输出到文件之外的所有内容。但是,我似乎无法使用 ShellExecute。看来我需要改用 CreateProcess 。我希望有更多 C++ 经验的人能够为我提供与我的代码和管道输出等效的 CreateProcess。如果不是,至少确认我想做的事情是可能的,并为我指明正确的方向。
- 谢谢