Я разрабатываю проект, где я запускаю файл jar. Я хочу получить возвращаемое значение из этого файла jar. Я занялся серфингом в сети и понял, что System.exit(n);
можно прочитать из программы, откуда я ее запускаю. Я также узнал, что могу читать его с помощью сценария оболочки. Но я совершенно не знаю, как писать сценарий оболочки. Я новичок в MFC (C++). Код, используемый для запуска файла jar, выглядит следующим образом.
void CDropboxSync::OnBnClickedDbxPcToCloud()
{
STARTUPINFOW siStartupInfo;
PROCESS_INFORMATION piProcessInfo;
memset(&siStartupInfo, 0, sizeof(siStartupInfo));
memset(&piProcessInfo, 0, sizeof(piProcessInfo));
SetCursor(LoadCursor(NULL, IDC_WAIT));
if (CreateProcess(m_csJrePath, TEXT(" -jar DbxUpldDwnld.jar u"), NULL, NULL, false, CREATE_NO_WINDOW, NULL, NULL, (LPSTARTUPINFOA)&siStartupInfo, &piProcessInfo) == false) {
AfxMessageBox(_T("Please install Java Runtime Environment(JRE) on your PC\n Or JRE not found on given path in INI File."), MB_ICONERROR);
CloseHandle(piProcessInfo.hProcess);
CloseHandle(piProcessInfo.hThread);
return;
}
CloseHandle(piProcessInfo.hProcess);
CloseHandle(piProcessInfo.hThread);
// TODO: Add your control notification handler code here
}
Итак, откуда я могу получить возвращаемое значение из файла JAR. Все эксперты из них, пожалуйста, помогите мне. Заранее спасибо.
Я не думаю, что вы должны смешивать сценарии оболочки и MFC. Вы запустили процесс из своей программы, и вы можете позвонить:
DWORD exitStatus;
CreateProcess(...)
...
WaitForSingleObject(piProcessInfo.hProcess, INFINITE);
GetExitCodeProcess(piProcessInfo.hProcess, &exitStatus);
чтобы получить код выхода процесса, который вы запустили. Обязательно вызовите это, прежде чем вы CloseHandle(piProcessInfo.hProcess);
Это правда, хотя, возможно, вам будет удобнее обернуть процесс, который вы запускаете в сценарии оболочки, но это не имеет никакого значения для вашего кода MFC.