有時候有種需求,一個進程只啟動一個,且必須啟動一個。
可以創建一個Windows服務,定時執行。每次執行時查詢該應用程序進程的數量,如果沒有,則啟動一個,如果已啟動多個,則只留一個
廢話不多說,上代碼:
1 public class Class1 2 { 3 public void Main() 4 { 5 var obj=System.Diagnostics.Process.GetProcessesByName("Calc").ToList(); 6 if (obj.Count == 0) 7 StartProcess(); 8 else if (obj.Count == 1) 9 SystemLog.WriteLogLine("只有一個進程啟動,無需操作"); 10 else 11 KillProcess(); 12 StartProcess(); 13 } 14 15 public void StartProcess() 16 { 17 ProcessStartInfo info = new ProcessStartInfo(); 18 info.FileName = @"D:\Calc.exe"; 19 info.Arguments = ""; 20 info.WindowStyle = ProcessWindowStyle.Minimized; 21 Process pro = Process.Start(info); 22 // pro.WaitForExit(); 23 } 24 public void KillProcess() 25 { 26 Process current = Process.GetCurrentProcess(); 27 Process[] processes = Process.GetProcessesByName("Calc"); 28 foreach (Process process in processes) 29 { 30 if (process.ProcessName == "Calc") 31 process.Kill(); 32 } 33 } 34 }