C#調用Exe 及 有參數的

來源:互聯網
上載者:User

在編寫程式時經常會使用到調用可執行程式的情況,本文將簡單介紹C#調用exe的方法。在C#中,通過Process類來進行進程操作。 Process類在System.Diagnostics包中。

樣本一
using System.Diagnostics;Process p = Process.Start("notepad.exe");p.WaitForExit();//關鍵,等待外部程式退出後才能往下執行

通過上述代碼可以調用記事本程式,注意如果不是調用系統程式,則需要輸入全路徑。

樣本二

當需要調用cmd程式時,使用上述調用方法會彈出令人討厭的黑窗。如果要消除,則需要進行更詳細的設定。

Process類的StartInfo屬性包含了一些進程啟動資訊,其中比較重要的幾個

FileName                可執行程式檔案名稱

Arguments              程式參數,已字串形式輸入
CreateNoWindow     是否不需要建立視窗
UseShellExecute      是否需要系統shell調用程式

通過上述幾個參數可以讓討厭的黑屏消失

System.Diagnostics.Process exep = new System.Diagnostics.Process();exep.StartInfo.FileName = binStr;exep.StartInfo.Arguments = cmdStr;exep.StartInfo.CreateNoWindow = true;exep.StartInfo.UseShellExecute = false;exep.Start();exep.WaitForExit();//關鍵,等待外部程式退出後才能往下執行

 

或者

System.Diagnostics.Process exep = new System.Diagnostics.Process();System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();startInfo.FileName = binStr;startInfo.Arguments = cmdStr;startInfo.CreateNoWindow = true;startInfo.UseShellExecute = false;exep.Start(startInfo);exep.WaitForExit();//關鍵,等待外部程式退出後才能往下執行

 

using   System.Diagnostics;  
   如果是dos  
   Process.Start("cmd.exe");  
   如果是其他檔案  
   Process.Start("絕對路徑+檔案名稱.exe");  
   ------------------------------------  
   如何在c#中調用外部dos程式?  
   使用Process對象:      
   System.Diagnostics.Process     p=new     System.Diagnostics.Process();      
   p.StartInfo.FileName="arj.exe"     ;//需要啟動的程式名      
   p.StartInfo.Arguments="-x     sourceFile.Arj     c:/temp";//啟動參數      
   p.Start();//啟動      
   if(p.HasExisted)//判斷是否運行結束      
     p.kill();  
-------------------------------------------------------------------------------------------------------------------------------------
///   <summary>  
   ///   啟動其他的應用程式  
   ///   </summary>  
   ///   <param   name="file">應用程式名稱</param>  
   ///   <param   name="workdirectory">應用程式工作目錄</param>  
   ///   <param   name="args">命令列參數</param>  
   ///   <param   name="style">視窗風格</param>  
   public   static   bool   StartProcess(string   file,string   workdirectory,string   args,ProcessWindowStyle   style)  
   {  
   try  
   {  
   Process   myprocess   =   new   Process();  
   ProcessStartInfo   startInfo   =   new   ProcessStartInfo(file,args);  
   startInfo.WindowStyle   =   style;  
   startInfo.WorkingDirectory   =   workdirectory;  
   myprocess.StartInfo   =   startInfo;  
   myprocess.StartInfo.UseShellExecute   =   false;  
   myprocess.Start();  
   return   true;  
   }  
   catch(Exception   e0)  
   {  
   MessageBox.Show("啟動應用程式時出錯!原因:"   +   e0.Message);  
   }  
   return   false;  
   }  
   
   
   
   string   parms   =   ""   +   GlobalObject.GetInstance().UserID   +   "   "   +   GlobalObject.GetInstance().UserPassword;  
   if   (PublicMethods.StartProcess(Application.StartupPath   +   @"/uptool/uptool.exe",Application.StartupPath   +   "//UpTool",parms,ProcessWindowStyle.Normal))  
   {  
   Environment.Exit(0);  
   }  
----------------------------------------------------------------------------------------------------------------------
Process.Start("IExplore.exe",   "http://community.csdn.net/Expert/topic/4021/4021327.xml?temp=.9493524");
System.Diagnostics.ProcessStartInfo   startInfo   =   new   System.Diagnostics.ProcessStartInfo(   );  
   startInfo.FileName   =   "執行EXE的檔案名稱";  
   startInfo.Arguments   =   "參數數組";  
   System.Diagnostics.Process.Start(   startInfo   );
----------------------------------------------------------------------------------------------------------------------------
1.有好多時,我們需要調用外部的EXE程式,並且要等它運行完畢,我們才可以繼續下面的動作,那我們怎樣去實現了,請看以下代碼.
         '怎樣等待外部程式運行完畢.
         '從系統資料夾讀入檔案
         Dim sysFolder As String = _
                     Environment.GetFoldERPath(Environment.SpecialFolder.System)
         '建立一個新的進程結構
         Dim pInfo As New ProcessStartInfo()
         '設定其成員FileName為系統資料的Eula.txt
         pInfo.FileName = sysFolder & "/eula.txt"
         '運行該檔案
         Dim p As Process = Process.Start(pInfo)
         '等待程式裝載完成
         p.WaitForInputIdle()
         '等待進行程退出
         p.WaitForExit()
         '繼續執行下面的代碼
         MessageBox.Show("繼續執行代碼")

2.我們想在5秒鐘後,強行關閉它.而不是需要我手工關閉.
     '設定退出時間
     Dim timeOut As Integer = 5000
     Dim sysFolder As String = _
         Environment.GetFolderPath(Environment.SpecialFolder.System)
     Dim pInfo As New ProcessStartInfo()
     pInfo.FileName = sysFolder & "/eula.txt"
     Dim p As Process = Process.Start(pInfo)
     p.WaitForInputIdle()
     p.WaitForExit(timeOut)
     '檢查是否在逾時前已關閉了.
     If p.HasExited = False Then
         '進行程還在運行
         '看進程有沒有回應
         If p.Responding Then
             p.CloseMainWindow() '關閉視窗
         Else
             p.Kill()   '強行中斷
         End If
     End If
     MessageBox.Show("繼續執行代碼")

 

在編寫程式時經常會使用到調用可執行程式的情況,本文將簡單介紹C#調用exe的方法。在C#中,通過Process類來進行進程操作。 Process類在System.Diagnostics包中。

樣本一
using System.Diagnostics;Process p = Process.Start("notepad.exe");p.WaitForExit();//關鍵,等待外部程式退出後才能往下執行

通過上述代碼可以調用記事本程式,注意如果不是調用系統程式,則需要輸入全路徑。

樣本二

當需要調用cmd程式時,使用上述調用方法會彈出令人討厭的黑窗。如果要消除,則需要進行更詳細的設定。

Process類的StartInfo屬性包含了一些進程啟動資訊,其中比較重要的幾個

FileName                可執行程式檔案名稱

Arguments              程式參數,已字串形式輸入
CreateNoWindow     是否不需要建立視窗
UseShellExecute      是否需要系統shell調用程式

通過上述幾個參數可以讓討厭的黑屏消失

System.Diagnostics.Process exep = new System.Diagnostics.Process();exep.StartInfo.FileName = binStr;exep.StartInfo.Arguments = cmdStr;exep.StartInfo.CreateNoWindow = true;exep.StartInfo.UseShellExecute = false;exep.Start();exep.WaitForExit();//關鍵,等待外部程式退出後才能往下執行

 

或者

System.Diagnostics.Process exep = new System.Diagnostics.Process();System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();startInfo.FileName = binStr;startInfo.Arguments = cmdStr;startInfo.CreateNoWindow = true;startInfo.UseShellExecute = false;exep.Start(startInfo);exep.WaitForExit();//關鍵,等待外部程式退出後才能往下執行
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.