shell — получает возвращаемое значение из исполняемого файла jar, запущенного из приложения MFC (c ++)

Я разрабатываю проект, где я запускаю файл 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. Все эксперты, пожалуйста, помогите мне. Заранее спасибо.

0

Решение

Я не думаю, что вы должны смешивать сценарии оболочки и MFC. Вы запустили процесс из вашей программы и можете позвонить:

DWORD exitStatus;
CreateProcess(...)
...
WaitForSingleObject(piProcessInfo.hProcess, INFINITE);
GetExitCodeProcess(piProcessInfo.hProcess, &exitStatus);

чтобы получить код завершения процесса, который вы запустили. Обязательно позвоните, прежде чем позвонить CloseHandle(piProcessInfo.hProcess);

Хотя это правда, что, возможно, вам будет удобнее оборачивать процесс, который вы запускаете, в сценарий оболочки, но это не имеет никакого значения для вашего кода MFC.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]