在編寫程式時經常會使用到調用可執行程式的情況,本文將簡單介紹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();//關鍵,等待外部程式退出後才能往下執行