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

0

Я разрабатываю проект, где я запускаю файл 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
executable-jar

1 ответ

1
Лучший ответ

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

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

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

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

  • 0
    Спасибо друг, позволь мне попробовать.
  • 0
    Я заметил, что вы не дожидаетесь завершения процесса, вы можете подождать с его ручкой - смотрите мой обновленный ответ.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню