2019年1月11日 星期五

[C#]開啟外部執行檔/關閉外部執行檔

兩個函式宣告,需要 using System.Diagnostics;

----------------------使用方式-------------------------------------------
OpenPress("AAA.exe"" ");//開啟外部檔案
ClosePress("AAA.exe");//關閉外部檔案
----------------------以下為函式-------------------------------------------

public static bool OpenPress(string FileName, string Arguments)//開啟外部檔案
       {
           Process pro = new Process();
           if(System.IO.File.Exists(FileName))
           {
               pro.StartInfo.FileName = FileName;
               pro.StartInfo.Arguments = Arguments;
               pro.StartInfo.CreateNoWindow = true;
               pro.StartInfo.CreateNoWindow = true;
               pro.StartInfo.UseShellExecute = false;
               pro.StartInfo.RedirectStandardInput = true;
               pro.StartInfo.RedirectStandardOutput = true;
               pro.StartInfo.CreateNoWindow = true;               
               pro.Start();
               return true;
           }
           return false;
       }
public static bool ClosePress(string FileName)//關閉外部檔案
       {
           Process[] proa = Process.GetProcesses();//獲取任務管理器中所有進程
           foreach(Process p1 in proa)
           {
               try
               {
                   string processName = p1.ProcessName.ToLower().Trim();
                   if(processName == FileName)
                   {
                       p1.WaitForExit(1000);                       
                       p1.Kill();
                       p1.CloseMainWindow();
                   }
               }
               catch { return false; }
           }
           return true;
       }
----------分隔線 說明--------------------

1.前言
透過程式控制,可在背景執行cmd.exe的命令。

2.說明
程式碼,提供兩種方式執行命令:

//程式碼最少,但是會跳出DOS視窗,閃一下後自行關閉
System.Diagnostics.Process.Start("cmd.exe", @"/c dir");

//在背景執行,無DOS視窗閃爍問題
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.Arguments = @"/c dir";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.CreateNoWindow = true;
p.Start();

沒有留言:

張貼留言

[SQL]顯示千分位與小數顯示

  CONVERT ( data_type [ ( length ) ] , expression [ , style ] ) CONVERT style參數說明 1  (expression為 money 或 smallmoney型別): 0 : 預設,保留小數位後兩位,並四捨...