在程式開發中,乙個程式經常需要去呼叫其他的程式,c#中process類正好提供了這樣的功能。它提供對本地和遠端程序的訪問並使您能夠啟動和停止本地系統程序。
一、啟動程序例項
process myprocess = new process();
trycatch (exception e)
process.start 方法,啟動(或重用)此 process 元件的 startinfo 屬性指定的程序資源,並將其與該元件關聯。如果啟動了程序資源,則為 true;如果沒有啟動新的程序資源(例如,如果重用了現有程序),則為 false。
process.startinfo 屬性,獲取或設定要傳遞給 process 的 start 方法的屬性。startinfo 表示用於啟動程序的一組引數。 呼叫 start 時,startinfo 用於指定要啟動的程序。 唯一必須設定的 startinfo 成員是 filename 屬性。
processstartinfo.filename 屬性,獲取或設定要啟動的應用程式或文件。filename 屬性不需要表示可執行檔案。 它可以是其副檔名已經與系統上安裝的應用程式關聯的任何檔案型別。
processstartinfo.createnowindow屬性,獲取或設定指示是否在新視窗中啟動該程序的值。
二、關掉啟動程序
process.kill 方法,立即停止關聯的程序。kill 強制終止程序,kill 方法將非同步執行。 在呼叫 kill 方法後,請呼叫 waitforexit 方法等待程序退出,或者檢查 ha***ited 屬性以確定程序是否已經退出。
三、程序結束後呼叫其他方法
在呼叫某個程序結束後,我們通常需要執行其他的方法,比如,在做安裝程式時,需要先判斷.net framework環境是否安裝,若未安裝,則先呼叫.net framework安裝程式後,繼續執行安裝程式方法。
通常這種情況下,有兩種方法:
方法一:waitforexit()方法。這種方法會阻塞當前程序,直到執行的外部程式退出。
system.diagnostics.process exep = system.diagnostics.process.start(@"c:\windows\notepad.exe");
exep.waitforexit();//關鍵,等待外部程式退出後才能往下執行
messagebox.show("notepad.exe執行完畢");
上述**在notepad.exe記事本結束之後,彈出對話方塊。
方法二:exited 事件。為外部程序新增乙個事件監視器,當退出後,獲取通知,這種方法時不會阻塞當前程序,你可以處理其它事情。
system.diagnostics.process exep = new system.diagnostics.process();
exep.startinfo.filename = @"c:\windows\notepad.exe";
exep.enableraisingevents = true;
exep.exited += new eventhandler(exep_exited);
exep.start();
void exep_exited(object sender, eventargs e)
在事件結束之後,呼叫exited 事件方法。
對於在c#程式開發中呼叫外部程式的操作,要判斷這個被呼叫的exe檔案是否執行結束其實最跟本的是 system.diagnostics.process類的應用,其中有乙個方法,就是waitforexit();和ha***ited屬性,這兩個也 都是為判斷外部程式exe檔案的執行狀態而設計的,ha***ited=ture時表示執行結束.
Unity啟動外部程式(Process)
啟動外部程式時 直接使用process.start 來啟動外部程式,引數 需要啟動的外部程式所在檔案位置 關閉外部程式時 使用 process.kill 來關閉外部程式 private string exepath void start void ongui if gui.button new re...
C 呼叫外部程式
關於三個sdk函式 winexec,shellexecute,createprocess的其他注意事項 定義標頭檔案 必須定義以下兩個標頭檔案 include 可替換為 windows.h include如果定義了標頭檔案 include 的話就不必定義 include 了。定義路徑 c 中所表示的...
C 呼叫外部程式
process.enableraisingevents true 是否激發關閉事業 new eventhandler process exited process.exittime 獲取程序退出時間 process.ha ited 程序是否已終止 process.kill 關閉當前程序 proces...