这篇文章主要介绍了C++调用Java的Jar包(带参数)问题,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
这篇文章主要介绍了C++调用Java的Jar包(带参数)问题,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
这篇文章主要介绍了C++调用Java的Jar包(带参数)问题,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
JarAppCall.h
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#include <atlstr.h>class CJarAppCall{ public: CJarAppCall(void); ~CJarAppCall(void); /* @brief 运行Jar包调用,等待运行完毕返回 @param[in] strJarDir jar包文件夹 @param[in] strJarName jar包名称<br> @param[in] strParam 传入的参数 @return 运行是否成功 */ bool Run(const CString& strJarDir, const CString& strJarName, const CString& strParam); private: bool CallApp(const CString& strJarName, const CString& strParam);}; |
JarAppCall.cpp
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
#include "JarAppCall.h"CJarAppCall::CJarAppCall(void){}CJarAppCall::~CJarAppCall(void){}bool CJarAppCall::Run(const CString& strJarDir, const CString& strJarName, const CString& strParam){ //缓存当前文件夹 WCHAR sOldDir[MAX_PATH] = { 0 }; GetCurrentDirectory(MAX_PATH, sOldDir); //设置当前文件夹为jar包文件夹 SetCurrentDirectory(strJarDir); bool bCalRest = CallApp(strJarName, strParam); //还原当前文件夹 SetCurrentDirectory(sOldDir); return bCalRest;}bool CJarAppCall::CallApp(const CString& strJarName, const CString& strParam){ WCHAR sSysDir[MAX_PATH] = { 0 }; GetSystemDirectory(sSysDir, MAX_PATH); CString strFullPath = sSysDir; strFullPath += _T("\\cmd.exe"); CString strCmdLine = _T(" /C "); strCmdLine += strJarName; strCmdLine += _T(" "); strCmdLine += strParam; STARTUPINFO si = { sizeof(si) }; PROCESS_INFORMATION pi; BOOL bRunProgram = CreateProcess(strFullPath.GetBuffer(), strCmdLine.GetBuffer(), NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi); strFullPath.ReleaseBuffer(); strCmdLine.ReleaseBuffer(); if (!bRunProgram){ return false; } // 等待程序结束 WaitForSingleObject(pi.hProcess, INFINITE); CloseHandle(pi.hProcess); return true;} |
test.cpp
发表评论