在c#中調用另一個應用程式或命令列(.exe 帶參數)

來源:互聯網
上載者:User

在.net中使用system.diaglostics.Process可以用來調用另一個命令列或程式。

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://www.newhappy.cn");  
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("繼續執行代碼")

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.