一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C/C++ - 淺析C++調用Java的Jar包(帶參數)問題

淺析C++調用Java的Jar包(帶參數)問題

2022-02-23 14:31alwaysmove C/C++

這篇文章主要介紹了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 += _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;
    }
 
    // 等待程序結束
    WaitForSingleObject(pi.hProcess, INFINITE);
    CloseHandle(pi.hProcess);
    return true;
}

test.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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
#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("文件發送失??!");
    }
    else{
        printf("文件發送成功!");
    }
 
 
    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("執行!");
        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;
}

到此這篇關于C++調用Java的Jar包(帶參數)的文章就介紹到這了,更多相關C++調用Java的Jar包內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://www.cnblogs.com/wwssgg/p/15565439.html

延伸 · 閱讀

精彩推薦
  • C/C++C/C++經典實例之模擬計算器示例代碼

    C/C++經典實例之模擬計算器示例代碼

    最近在看到的一個需求,本以為比較簡單,但花了不少時間,所以下面這篇文章主要給大家介紹了關于C/C++經典實例之模擬計算器的相關資料,文中通過示...

    jia150610152021-06-07
  • C/C++C語言中炫酷的文件操作實例詳解

    C語言中炫酷的文件操作實例詳解

    內存中的數據都是暫時的,當程序結束時,它們都將丟失,為了永久性的保存大量的數據,C語言提供了對文件的操作,這篇文章主要給大家介紹了關于C語言中文件...

    針眼_6702022-01-24
  • C/C++詳解c語言中的 strcpy和strncpy字符串函數使用

    詳解c語言中的 strcpy和strncpy字符串函數使用

    strcpy 和strcnpy函數是字符串復制函數。接下來通過本文給大家介紹c語言中的strcpy和strncpy字符串函數使用,感興趣的朋友跟隨小編要求看看吧...

    spring-go5642021-07-02
  • C/C++深入理解goto語句的替代實現方式分析

    深入理解goto語句的替代實現方式分析

    本篇文章是對goto語句的替代實現方式進行了詳細的分析介紹,需要的朋友參考下...

    C語言教程網7342020-12-03
  • C/C++C++之重載 重定義與重寫用法詳解

    C++之重載 重定義與重寫用法詳解

    這篇文章主要介紹了C++之重載 重定義與重寫用法詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下...

    青山的青6062022-01-04
  • C/C++C語言實現電腦關機程序

    C語言實現電腦關機程序

    這篇文章主要為大家詳細介紹了C語言實現電腦關機程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    xiaocaidayong8482021-08-20
  • C/C++c++ 單線程實現同時監聽多個端口

    c++ 單線程實現同時監聽多個端口

    這篇文章主要介紹了c++ 單線程實現同時監聽多個端口的方法,幫助大家更好的理解和學習使用c++,感興趣的朋友可以了解下...

    源之緣11542021-10-27
  • C/C++學習C++編程的必備軟件

    學習C++編程的必備軟件

    本文給大家分享的是作者在學習使用C++進行編程的時候所用到的一些常用的軟件,這里推薦給大家...

    謝恩銘10102021-05-08
主站蜘蛛池模板: 久久久无码精品亚洲欧美 | 国产色拍| 夫妻性生活影院 | 阿v天堂2020 α片免费 | 日韩精选视频 | 99热久热这里只精品 | 色中文字幕 | 91久久色 | 色欲麻将 | 精品久久久噜噜噜久久久app | lilisha李丽莎喷水大胆在线 | xxx久久 | 99国产精品热久久久久久夜夜嗨 | 全是女性放屁角色的手游 | 美女视频一区二区三区在线 | 久久青草免费91线频观看站街 | 国产亚洲精品美女2020久久 | 国产东北三老头伦一肥婆 | 99午夜高清在线视频在观看 | 91短视频社区在线观看 | 欧美区一区 | 超级乱淫伦小说1女多男 | 亚洲另类激情 | 成人香蕉xxxxxxx| 香港三级系列在线播放 | 白丝捆绑调教 | www日本高清视频 | 天堂成人在线观看 | 日韩欧免费一区二区三区 | 亚洲国产精品一区二区三区久久 | 果冻传媒在线播放1 | 欧美高清在线精品一区二区不卡 | 热久久免费视频 | 日韩在线一区二区三区 | 日本在线观看www免费 | 日本 视频 在线 | 日本高清va不卡视频在线观看 | 人与善xuanwen在线400 | 男男羞羞视频网站国产 | 99热自拍 | 国产区香蕉精品系列在线观看不卡 |