1. 程式人生 > >windows呼叫另外一個EXE程式,WinExec+Cmd+BAT

windows呼叫另外一個EXE程式,WinExec+Cmd+BAT

首先說一下:WinExec的函式原型:

UINT Win Exec(LPCSTR lpCmdLine, UINT uCmdShow);

引數:
lpCmdLine:指向一個空結束的字串,串中包含將要執行的應用程式的命令列。
uCmdShow:定義Windows應用程式的視窗如何顯示,併為CreateProcess函式提供STARTUPINFO引數的wShowWindow成員的值。
⑶ 返回值:
函式呼叫成功,則返回值大於31。若函式呼叫失敗,則返回值為下列之一:
① 0:系統記憶體或資源已耗盡。
② ERROR_BAD_FORMAT:EXE檔案無效(非Win32.EXE或.EXE影像錯誤)。
③ ERROR_FILE_NOT_FOUND:指定的檔案未找到。


④ ERROR_PATH_NOT_FOUND:指定的路徑未找到。
大於 31 {呼叫成功}
等於 0 {記憶體不足}
ERROR_FILE_NOT_FOUND = 2; {檔名錯誤}
ERROR_PATH_NOT_FOUND = 3; {路徑名錯誤}
ERROR_BAD_FORMAT = 11; {EXE 檔案無效}
//uCmdShow 引數可選值常用就兩個:
SW_HIDE = 0; {隱藏}
SW_SHOW = 5; 顯示
其次,CMD命令:
/K      執行字串指定的命令但保留
/Q      關閉回顯
/D      禁止從登錄檔執行 AutoRun 命令(見下)
/A      使向管道或檔案的內部命令輸出成為 ANSI
/U      使向管道或檔案的內部命令輸出成為

/C      執行字串指定的命令然後終止

/S      修改 /C 或 /K 之後的字串處理

例項:

string cmdstr;
cmdstr += "cmd.exe /c mysql.exe -u";
cmdstr += uName;
cmdstr += " -p";
cmdstr += pw;
cmdstr += " -h";
cmdstr += host;
cmdstr += " ";
cmdstr += database;
cmdstr += " < ";
cmdstr += path;
if (WinExec(cmdstr.c_str(), SW_HIDE) < 32)
{
return SQL_RESULT_TYPE_CLEAR_FALSE;
}
else
{
return SQL_RESULT_TYPE_OK;
}

例項:

BOOL a = PathFileExists(L"E://project//bin_d//run_//AutoBackup_mouth.bat");// 檔案是否存在

string str = "E://project//bin_d//run_//AutoBackup_mouth.bat";
if (WinExec(str.c_str(), SW_SHOW) < 32)
{
return SQL_RESULT_TYPE_CLEAR_FALSE;
}
else
{
return SQL_RESULT_TYPE_OK;
}

相關推薦

windows呼叫另外一個EXE程式WinExec+Cmd+BAT

首先說一下:WinExec的函式原型: UINT Win Exec(LPCSTR lpCmdLine, UINT uCmdShow); 引數:lpCmdLine:指向一個空結束的字串,串中包含將要執

在同一個類中一個方法呼叫另外一個有註解(比如@Async@Transational)的方法註解失效的原因和解決方法

在同一個類中,一個方法呼叫另外一個有註解(比如@Async,@Transational)的方法,註解是不會生效的。 比如,下面程式碼例子中,有兩方法,一個有@Transational註解,一個沒有。如果呼叫了有註解的addPerson()方法,會啟動一個Transaction;如果呼叫updatePerso

C++以阻塞的方式呼叫外部exe程式等待其執行結束

        SHELLEXECUTEINFO ShExecInfo = {0};         ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);  

在同一個解決方案下如何從一個工程中呼叫另外一個工程的函式

  兩個專案分別是test1和test2,test1中有一個函式fun()被test2呼叫,用法如下: //test1.h int fun(int a, int b); //test1.cpp #include <iostream> #include "

QT5的程式打包釋出(將QT5的工程專案打包成一個exe程式) QT5的程式打包釋出(將QT5的工程專案打包成一個exe程式

QT5的程式打包釋出(將QT5的工程專案打包成一個exe程式) 最近,在學習QT5的過程中,想嘗試著把自己寫的工程程式給打包釋出出來,在任何一臺windows系統都能執行,這樣就不會限於電腦需不需要安裝QT安裝包了。 首先,先介紹自己使用的環境。我使用的QT版本是。我的電

java啟動exe程式傳遞引數和獲取引數

1、java中啟動exe程式 ,並新增傳參 String[] cmd = {"hh.exe","12315"}; Process process = null; try { ProcessBuilder pb =

iOS開發:第一個iOS程式加法計算器

相信很多學習程式設計的人,不管是學習C,C++,JAVA,還是iOS開發用的Objective-C,入門不久就迫切地想寫點看得見的介面玩玩。當然瞭解諸如iOS架構,系統層次這些是非常必要的,但是作為入門案例,我們不妨從最直觀的地方入手!! 下面開始編寫我們的第一個iOS程式: 1.使用的

設計一個 Java 程式自定義異常類從命令列(鍵盤)輸入一個字串如果該字串值為“XYZ”。。。

設計一個 Java 程式,自定義異常類,從命令列(鍵盤)輸入一個字串,如果該字串值為“XYZ”,則丟擲一個異常資訊“This is a XYZ”,如果從命令列輸入 ABC,則沒有丟擲異常。(只有 XYZ 和 ABC 兩種輸入)。 class xyz {   public void test(S

windows下idea編寫WordCount程式並打jar包上傳到hadoop叢集執行(傻瓜版)

通常會在IDE中編制程式,然後打成jar包,然後提交到叢集,最常用的是建立一個Maven專案,利用Maven來管理jar包的依賴。 一、生成WordCount的jar包 1. 開啟IDEA,File→New→Project→Maven→Next→填寫Groupld和Artifactld→Ne

vue中methods一個方法呼叫另外一個方法

vue在同一個元件內; methods中的一個方法呼叫methods中的另外一個方法 可以在呼叫的時候 this.$options.methods.test2(); this.$options.methods.test2();一個方法呼叫另外一個方法; new Vue({

用python寫一個程式解決買水果的問題?

問題: 商店總共有三種水果,香蕉/蘋果/葡萄,單價分別為3.5/5.0/3.0元/500克。 寫一個小程式實現:          1、輸出一個選單:列印每種水果的價格:          2、尋問客戶欲購買水果?          3、客戶想購買的克數?    

利用winrar製作exe程式如何配置解壓後自動執行

轉自:https://blog.csdn.net/shann09/article/details/27497901 rar自解壓安裝,且解壓後自動執行某程式 1,winRAR能夠打包成自解壓的exe檔案,並且設定解壓前或解壓後執行某個程式 2,選擇要壓縮的所有檔案,右鍵“新增到壓縮檔案” 3,勾

4-QT的程式打包釋出(將QT5的工程專案打包成一個exe程式

https://blog.csdn.net/windsnow1/article/details/78004265  最近,在學習QT5的過程中,想嘗試著把自己寫的工程程式給打包釋出出來,在任何一臺windows系統都能執行,這樣就不會限於電腦需不需要安裝QT安裝包了。 首先,先介紹自己使用的環境。

如何寫第一個Python程式30萬年薪Python工程師經驗之談

在正式編寫第一個Python程式前,我們先複習一下什麼是命令列模式和Python互動模式。 命令列模式 在Windows開始選單選擇“命令提示符”,就進入到命令列模式,它的提示符類似C:>: ┌───────────────────────────────

使用java來把一個目錄下的所有檔案拷貝到另外一個目錄下並且重新命名

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!                import java.io.File;import java.io.FileReader;import java.io.FileWriter;public c

使一個元素覆蓋在另外一個元素之上使得只能點選上面的元素上

<div class="text_C"> <span style="font-size: 18px;color: black;" :class="item.status==2?'greenc':''"> {{item.statusS

VS Code中C檔案呼叫另外一個C檔案

main.c #include <stdio.h> #include "BaseStore.h" int main() { baseStore_aboutSizeofFunc(); return 0; } BaseStore.h #includ

VC中怎麼執行一個應用程式並取得應用程式的返回值

我沒有想到怎樣去檢查掛掉的程式,在實際應用中我是採用估算一個最大執行時間,如果超過此時間,即強行終止程式。因為要取得子程序執行結束的返回值,所以要用上面的方法。如果不要求取得返回值,把:ShellExecuteEx(&ShExecInfo);以下的程式碼去掉就是了,主程序依然可以繼續下向執行。如果不考

用pyinstaller打包一個exe程式

用pyinstaller打包一個tkinter的exe程式 今天用pyinstaller打了個小tk程式,整理了一些小問題的解決 打包單個exe檔案 -F 選項可以打出一個exe檔案,預設

編寫一個應用程式使用者分別從兩個文字框輸入學術的姓名和分數

package JAVA1; import java.awt.Button;   import java.awt.Label;   import java.awt.event.ActionEvent;   import java.awt.event.ActionListener;   import java.