• 當前位置:首頁 > IT技術 > Windows編程 > 正文

    在c#中調用另一個應用程序或命令行(.exe 帶參數)
    2021-08-07 15:59:18

    在.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???+???"http://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("繼續執行代碼")

    ?
    ?
    ?
    ?

    本文摘自 :https://blog.51cto.com/u

    開通會員,享受整站包年服務
    国产呦精品一区二区三区网站|久久www免费人咸|精品无码人妻一区二区|久99久热只有精品国产15|中文字幕亚洲无线码