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

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

本文出自 “牛海彬的博客” 博客,請務必保留此出處http://newhappy.blog.51cto.com/381292/135705

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章