欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺析C++調(diào)用Java的Jar包(帶參數(shù))問題

 更新時間:2021年11月17日 08:34:59   作者:alwaysmove  
這篇文章主要介紹了C++調(diào)用Java的Jar包(帶參數(shù))問題,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

JarAppCall.h

#include <atlstr.h>
class CJarAppCall
{
    public:
        CJarAppCall(void);
        ~CJarAppCall(void);
        /*
        @brief 運(yùn)行Jar包調(diào)用,等待運(yùn)行完畢返回
        @param[in] strJarDir jar包文件夾
        @param[in] strJarName jar包名稱<br>          @param[in] strParam 傳入的參數(shù)
        @return 運(yùn)行是否成功
        */
        bool Run(const CString& strJarDir, const CString& strJarName, const CString& strParam);
 
    private:
        bool CallApp(const CString& strJarName, const CString& strParam);
};

JarAppCall.cpp

#include "JarAppCall.h"
CJarAppCall::CJarAppCall(void){
}
CJarAppCall::~CJarAppCall(void){
}
bool CJarAppCall::Run(const CString& strJarDir, const CString& strJarName, const CString& strParam){
    //緩存當(dāng)前文件夾
    WCHAR sOldDir[MAX_PATH] = { 0 };
    GetCurrentDirectory(MAX_PATH, sOldDir);
 
    //設(shè)置當(dāng)前文件夾為jar包文件夾
    SetCurrentDirectory(strJarDir);
    bool bCalRest = CallApp(strJarName, strParam);
    //還原當(dāng)前文件夾
    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 += _T("java -jar ");
    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;
    }
 
    // 等待程序結(jié)束
    WaitForSingleObject(pi.hProcess, INFINITE);
    CloseHandle(pi.hProcess);
    return true;
}

test.cpp

#include "stdio.h"
#include "JarAppCall.h"
#include<stdlib.h>
#include <cstring>
#include <string>
#include <iostream>
 
int charContainsToChar(char* source, char* target);
char* getNameReferences(char* src);
 
int main(){
    /*CString strJarDir = _T("C:\\Users\\12449\\Desktop");
    CString strJarName = _T("test.jar");
 
    CJarAppCall jarCall;
    if (!jarCall.Run(strJarDir, strJarName)){
        //啟動失敗
        printf("啟動失敗");
        return 0;
    }
    printf("啟動成功");*/
     
 
    //char src[] = "測.試.xlsx";
    //char test[] = "test";
    //char dataset_name[] = "PLM_021-000320.txt";
    //char* result = getNameReferences(test);
    //char* null = "NULL";
    //if (strcmp(result, null) != 0){
    //  printf("name=%s\n", 1);
    //}
    //printf(result);
 
    CString strJarDir = _T("C:\\Users\\12449\\Desktop");
    CString strJarName = _T("HFAcceptAndSendHandlerParam.jar");
    CString strParam = _T("test");
    CJarAppCall jarCall;
    if (!jarCall.Run(strJarDir, strJarName, strParam)){
        printf("文件發(fā)送失敗!");
    }
    else{
        printf("文件發(fā)送成功!");
    }
 
 
    return 0;
}
 
char* getNameReferences(char* src){
    char* result = "\0";
    if (strcmp(src, "\0") == 0){
        return "NULL";
    }
    char point[] = ".";
    if (charContainsToChar(src, point) > 0){
        printf("判斷成功!");
    }
    char *p = strstr(src, ".");
    p++;
     
    while (charContainsToChar(p, point) > 0){
        printf("判斷成功!");
        p = strstr(p, ".");
        printf("執(zhí)行!");
        p++;
    }
    char *xls = "xls";
    char *xlsx = "xlsx";
    char *doc = "doc";
    char *docx = "docx";
    char *ppt = "ppt";
    char *pptx = "pptx";
    char *pdf = "pdf";
    char *zip = "zip";
    char *rar = "rar";
    char *txt = "txt";
    if (strcmp(p, xls) == 0){
        result =  "excel";
    }
    else if (strcmp(p, xlsx) == 0){
        result = "excel";
    }
    else if (strcmp(p, doc) == 0) {
        result = "word";
    }
    else if (strcmp(p, docx) == 0){
        result = "word";
    }
    else if (strcmp(p, ppt) == 0){
        result = "powerpoint";
    }
    else if (strcmp(p, pptx) == 0){
        result = "powerpoint";
    }
    else if (strcmp(p, pdf) == 0){
        result = "PDF_Reference";
    }
    else if (strcmp(p, zip) == 0){
        result = "ZIPFILE";
    }
    else if (strcmp(p, rar) == 0){
        result = "HF8_RAR";
    }
    else if (strcmp(p, txt) == 0){
        result = "Text";
    }
    return result;
}
 
//判斷字符串中是否包含另一個字符串
int charContainsToChar(char* source, char* target)//source是主串,target是子串
{
    int i, j;
    int s_len = strlen(source);
    int t_len = strlen(target);
    if (t_len>s_len)
    {
        return -1;
    }
    for (i = 0; i <= s_len - t_len; i++)
    {
        j = 0;
        int flag = 1;
        if (source[i] == target[j])
        {
            int k, p = i;
            for (k = 0; k<t_len; k++)
            {
                if (source[p] == target[j])
                {
                    p++;
                    j++;
                    continue;
 
                }
                else
                {
                    flag = 0;
                    break;
                }
            }
        }
        else
        {
            continue;
        }
        if (flag == 1)
        {
            return i;
        }
    }
    return -1;
}

到此這篇關(guān)于C++調(diào)用Java的Jar包(帶參數(shù))的文章就介紹到這了,更多相關(guān)C++調(diào)用Java的Jar包內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 數(shù)據(jù)結(jié)構(gòu)之帶頭結(jié)點(diǎn)的單鏈表

    數(shù)據(jù)結(jié)構(gòu)之帶頭結(jié)點(diǎn)的單鏈表

    單鏈表是一種鏈?zhǔn)酱嫒〉臄?shù)據(jù)結(jié)構(gòu),用一組地址任意的存儲單元存放線性表中的數(shù)據(jù)元素。鏈表中的數(shù)據(jù)是以結(jié)點(diǎn)來表示的,每個結(jié)點(diǎn)的構(gòu)成:數(shù)據(jù)域(數(shù)據(jù)元素的映象)?+?指針域(指示后繼元素存儲位置),元素就是存儲數(shù)據(jù)的存儲單元,指針就是連接每個結(jié)點(diǎn)的地址數(shù)據(jù)
    2023-07-07
  • VC實(shí)現(xiàn)將網(wǎng)址解析出所有ip地址的實(shí)例代碼

    VC實(shí)現(xiàn)將網(wǎng)址解析出所有ip地址的實(shí)例代碼

    這篇文章主要介紹了VC實(shí)現(xiàn)將網(wǎng)址解析出所有ip地址的實(shí)例代碼,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • 解讀C++編程中類模板的三種特化

    解讀C++編程中類模板的三種特化

    這篇文章主要介紹了C++編程中類模板的三種特化,需要的朋友可以參考下
    2016-01-01
  • 淺析C++可變參數(shù)模板的展開方式

    淺析C++可變參數(shù)模板的展開方式

    可變參數(shù)模板(variadic templates)是C++11新增的強(qiáng)大的特性之一,它對模板參數(shù)進(jìn)行了高度泛化,能表示0到任意個數(shù)、任意類型的參數(shù),這篇文章主要介紹了C++可變參數(shù)模板的展開方式,需要的朋友可以參考下
    2022-04-04
  • C語言中多樣式的格式控制符的使用詳解

    C語言中多樣式的格式控制符的使用詳解

    C語言中的格式控制符類型繁多,雖然格式字符可能就那么幾個,但組合起來使得格式控制符變得多樣化,這對于C語言初學(xué)者來說無疑是一種痛苦,為此我將常見的格式控制符類型及意義總結(jié)一下,希望對大家有所幫助
    2023-03-03
  • C/C++實(shí)現(xiàn)對STORM運(yùn)行信息查看及控制的方法

    C/C++實(shí)現(xiàn)對STORM運(yùn)行信息查看及控制的方法

    這篇文章主要介紹了C/C++實(shí)現(xiàn)對STORM運(yùn)行信息查看及控制的方法,需要的朋友可以參考下
    2014-07-07
  • c語言實(shí)現(xiàn)詞頻統(tǒng)計(jì)的簡單實(shí)例

    c語言實(shí)現(xiàn)詞頻統(tǒng)計(jì)的簡單實(shí)例

    下面小編就為大家?guī)硪黄猚語言實(shí)現(xiàn)詞頻統(tǒng)計(jì)的簡單實(shí)例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-09-09
  • C++ Struct結(jié)構(gòu)體用法淺析

    C++ Struct結(jié)構(gòu)體用法淺析

    前邊我們所定義的類,均是使用struct關(guān)鍵字來定義,但是C++中真正用于定義類的關(guān)鍵字為class,因?yàn)橐狢++兼容C,所以保留struct關(guān)鍵字,struct與class的用法完全相同
    2023-03-03
  • Qt實(shí)現(xiàn)指針式時鐘 Qt實(shí)現(xiàn)動態(tài)時鐘

    Qt實(shí)現(xiàn)指針式時鐘 Qt實(shí)現(xiàn)動態(tài)時鐘

    這篇文章主要為大家詳細(xì)介紹了Qt實(shí)現(xiàn)指針式時鐘,Qt實(shí)現(xiàn)動態(tài)時鐘,兩者相互切換,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • Cocos2d-x UI開發(fā)之文本類使用實(shí)例

    Cocos2d-x UI開發(fā)之文本類使用實(shí)例

    這篇文章主要介紹了Cocos2d-x學(xué)習(xí)筆記之文本類,文本類是UI開發(fā)中經(jīng)常使用的,本文用詳細(xì)的代碼注釋講解了文本類的使用,需要的朋友可以參考下
    2014-09-09

最新評論