Я работаю над устаревшим кодом, где они вызывают файл bat, используя Process в c#.
Process startV6DataExportor = new Process();
startV6DataExportor.EnableRaisingEvents = false;
startV6DataExportor.StartInfo.FileName = strV6BatchPath;
startV6DataExportor.StartInfo.Arguments = strV6batchArgs;
startV6DataExportor.Start();
startV6DataExportor.WaitForExit();
int v6exitcode = startV6DataExportor.ExitCode;
В этом файле bat вызывается другой exe-файл, передавая параметры из файла bat. Например,
call %V6_CATSTART_PATH% -run %V6_EXE_NAME% -object "%ROOT_ID% %ROOT_VERSION%"
Опять в% V6_EXE_NAME% exe, CreateProcess () в C ++ вызывает exe-файл Excel.
int main(int argc, char* argv[])
{
if(!CreateProcess(lpctstrBatchPath, // No module name (use command line)
lpArgs, // Command line
NULL, // Process handle not inheritable
NULL, // Thread handle not inheritable
FALSE, // Set handle inheritance to FALSE
0, // No creation flags
NULL, // Use parent's environment block
NULL, // Use parent's starting directory
&si, // Pointer to STARTUPINFO structure
&pi) // Pointer to PROCESS_INFORMATION structure
)
{
printf( "CreateProcess failed (%d).\n", GetLastError() );
return E_FAIL;
}
else
{
WaitForSingleObject(pi.hProcess,INFINITE);
DWORD ec;
GetExitCodeProcess(pi.hProcess, &ec);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
unsigned int excelReturnValue = (unsigned int)ec;
int erv = static_cast<int>(ec);
}
}
Из этого файла Excel.exe я получаю возврат значение 3. Как я могу передать это значение в исходный код c#?