C#中利用process类调用外部程序以及执行dos命令

 

c#中的Process类可方便的调用外部程序,所以我们可以通过调用cmd.exe程序

 

加入参数 "/c " + 要执行的命令来执行一个dos命令

(/c代表执行参数指定的命令后关闭cmd.exe /k参数则不关闭cmd.exe)

 

          private string RunCmd(string command)

              {

             //實例一個Process類,啟動一個獨立進程

             Process p = new Process();

  

             //Process類有一個StartInfo屬性,這個是ProcessStartInfo類,包括了一些屬性和方法,下面我們用到了他的幾個屬性:

 

              p.StartInfo.FileName = "cmd.exe";           //設定程序名

             p.StartInfo.Arguments = "/c " + command;    //設定程式執行參數

             p.StartInfo.UseShellExecute = false;        //關閉Shell的使用

             p.StartInfo.RedirectStandardInput = true;   //重定向標準輸入

            p.StartInfo.RedirectStandardOutput = true; //重定向標準輸出

             p.StartInfo.RedirectStandardError = true;   //重定向錯誤輸出

             p.StartInfo.CreateNoWindow = true;          //設置不顯示窗口

 

             p.Start();   //啟動

           

             //p.StandardInput.WriteLine(command);       //也可以用這種方式輸入要執行的命令

             //p.StandardInput.WriteLine("exit");        //不過要記得加上Exit要不然下一行程式執行的時候會當機

            

             return p.StandardOutput.ReadToEnd();        //從輸出流取得命令執行結果

 

         }

 

C# 中Process 和 Thread 的启动

Start Process

Process[] oeProcess = Process.GetProcessesByName("msimn");
            
if (oeProcess == null || oeProcess.Length == 0) {
                
try {
                    
string oeExeFile =
                        
string.Format(@"{0}\Outlook Express\msimn.exe", Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles));
                
                    
if (File.Exists(oeExeFile)) {
                        Process process = Process.Start(oeExeFile);
                        Thread.Sleep(7*1000);
                    } 
else {
                        MessageBox.Show("Start Outlook Express failure , for Outlook Express is not exist !");
                        
return false;
                    } 
                } 
catch (Exception exp) {
                    
throw new Exception("Start Outlook Express failure , for "+exp.Message,exp);
                }
            }
            
return true;


Start Thread

ThreadStart threadStart = new ThreadStart(ImageAutoWatch);
                imageWatchThread = 
new Thread(threadStart);
                imageWatchThread.Start();