我正在开发一个项目,我正在启动一个jar文件。我想从该jar文件返回一个值。我已经在网上浏览并得到一个线索,System.exit(n);
可以从程序中读取,从哪里启动它。我也知道我可以使用shell脚本读取它。但我完全不知道如何编写shell脚本。我是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 :(得分:1)
我认为你不应该混合使用shell脚本和MFC。您从程序中启动了该过程,您可以致电:
DWORD exitStatus;
CreateProcess(...)
...
WaitForSingleObject(piProcessInfo.hProcess, INFINITE);
GetExitCodeProcess(piProcessInfo.hProcess, &exitStatus);
获取您启动的进程的退出代码。请务必在致电CloseHandle(piProcessInfo.hProcess);
虽然也许你会发现在shell脚本中包装你正在启动的进程会更方便,但这对你的MFC代码没有任何影响。