C 呼叫外部exe的幾種方式

2021-10-25 17:05:49 字數 3926 閱讀 2086

using system.diagnostics;

process p = process.

start

("program.exe");

p.waitforexit()

;//本行**不是必須,但是很關鍵,限制等待外部程式退出後才能往下執行

當exe程式需要傳遞引數時:

using system.diagnostics;

process p = process.

start

("program.exe 引數");

p.waitforexit()

;//本行**不是必須,但是很關鍵,限制等待外部程式退出後才能往下執行

shellexecute 方法可以開啟乙個已註冊的檔案、開啟乙個目錄、列印乙個檔案等等,可以根據返回值判斷是否呼叫成功。函式如下:

intptr

shellexecute

(intptr hwnd,

string lpoperation,

string lpfile,

string lpparameters,

string lpdirectory,

showcommands nshowcmd)

;

其中,各引數資訊如下:

sw_hide            =0;

//隱藏

sw_shownormal =1;

//用最近的大小和位置顯示, 啟用

sw_normal =1;

//同 sw_shownormal

sw_showminimized =2;

//最小化, 啟用

sw_showmaximized =3;

//最大化, 啟用

sw_maximize =3;

//同 sw_showmaximized

sw_shownoactivate =4;

//用最近的大小和位置顯示, 不啟用

sw_show =5;

//同 sw_shownormal

sw_minimize =6;

//最小化, 不啟用

sw_showminnoactive =7;

//同 sw_minimize

sw_showna =8;

//同 sw_shownoactivate

sw_restore =9;

//同 sw_shownormal

sw_showdefault =10;

//同 sw_shownormal

sw_max =10;

//同 sw_shownormal

返回值說明:返回值大於 32 時,即執行成功。執行失敗的返回值具體意義如下:

0=0

//記憶體不足

error_file_not_found =2;

//檔名錯誤

error_path_not_found =3;

//路徑名錯誤

error_bad_format =11;

//exe 檔案無效

se_err_share =26;

//發生共享錯誤

se_err_associncomplete =27;

//檔名不完全或無效

se_err_ddetimeout =28;

//超時

se_err_ddefail =29;

//dde 事務失敗

se_err_ddebusy =30;

//正在處理其他 dde 事務而不能完成該 dde 事務

se_err_noassoc =31;

//沒有相關聯的應用程式

**實現如下:

// 引入庫

[dllimport

("shell32.dll")]

static

extern

intptr

shellexecute

(intptr hwnd,

string lpoperation,

string lpfile,

string lpparameters,

string lpdirectory,

showcommands nshowcmd)

;// 呼叫

string filepath =

@"c:\users\administrator\desktop\program.exe"

;intptr result =

shellexecute

(intptr.zero,

"open"

, filepath,"",

"", showcommands.sw_shownormal)

;

winexec方法僅能開啟本地程式,可以根據返回值判斷是否呼叫成功(<32表示出現錯誤)。

uint

winexec

(exepath,showcmd)

引數說明:

–xepath:命令列引數。注意,要用pchar轉化一下。

–showcmd:外部程式的執行方式。其取值如下:

----sw_hide 隱藏   

----sw_maximize 最大化

----sw_minimize 最小化,並把zorder順序在此視窗之後(即視窗下一層)的視窗啟用

----sw_restore 啟用視窗並還原為初始化大小 sw_show以當前大小和狀態啟用視窗

----sw_show 用當前的大小和位置顯示乙個視窗,同時令其進入活動狀態

----sw_showdefault 以預設方式執行

----sw_showmaximized 啟用視窗並最大化

----sw_showminimized 啟用視窗並最小化

----sw_showminnoactive最小化但不改變當前啟用的視窗

----sw_showna 以當前狀態顯示視窗但不改變當前啟用的視窗

----sw_shownoactivate 以初始化大小顯示視窗但不改變當前啟用的視窗

----sw_shownormal 啟用並顯示視窗,如果是最大(小)化,視窗將會還原。第一次執行程式 時應該使用這個值

如果呼叫成功,這個函式會返回乙個大於等於32的值,否則呼叫失敗,其返回值的意義如下:

–0 系統記憶體或資源不足

–error_bad_format .exe檔案格式無效(比如不是32位應用程式)

–error_file_not_found 指定的檔案設有找到

–error_path_not_found 指定的路徑沒有找到

// 引入庫

[dllimport

("kernel32.dll")]

public

static

extern

intwinexec

(string programpath,

int opertype)

;// 呼叫

string pathstr=

@"c:\users\administrator\desktop\program.exe"

;var result =

winexec

(pathstr,

(int

)showwindowcommands.sw_show)

;

c 呼叫外部exe程式

c 呼叫外部exe程式,首先要 using system.diagnostics 然後開啟乙個新process system.diagnostics.processstartinfo p null system.diagnostics.process proc p new processstarti...

C 程式呼叫外部exe程式

在編寫程式時經常會使用到呼叫可執行程式的情況,本文將簡單介紹c 呼叫exe的方法。在c 中,通過process類來進行程序操作。process類在system.diagnostics包中。using system.diagnostics process p process.start notepad...

qt呼叫外部exe

startdetached啟動的libfx.exe跟你的程序沒關係,你的程式關了它還可以繼續執行 qstring strfile tr e f libfx.exe qprocess pprocess new qprocess this pprocess startdetached strfile s...