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轉化一下。如果呼叫成功,這個函式會返回乙個大於等於32的值,否則呼叫失敗,其返回值的意義如下:–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 啟用並顯示視窗,如果是最大(小)化,視窗將會還原。第一次執行程式 時應該使用這個值
–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...