C#编程中设置程序只可被运行一次的方法

2019-12-26 14:16:11于海丽
  • [STAThread]  static void Main() 
  • {  Application.EnableVisualStyles(); 
  • Application.SetCompatibleTextRenderingDefault(false);  Process instance = RunningInstance(); 
  • if (instance == null)  { 
  • Form1 frm = new Form1();  Application.Run(new Form1()); 
  • }  else 
  • {  HandleRunningInstance(instance); 
  • }   
  • }  /// <summary> 
  • /// 获取正在运行的实例,没有运行的实例返回null;  /// </summary> 
  • public static Process RunningInstance()  { 
  • Process current = Process.GetCurrentProcess();  Process[] processes = Process.GetProcessesByName(current.ProcessName); 
  • foreach (Process process in processes)  { 
  • if (process.Id != current.Id)  { 
  • if (Assembly.GetExecutingAssembly().Location.Replace("/", "") == current.MainModule.FileName)  { 
  • return process;  } 
  • }  } 
  • return null;  } 
  •   /// <summary> 
  • /// 显示已运行的程序。  /// </summary> 
  • public static void HandleRunningInstance(Process instance)  { 
  • ShowWindowAsync(instance.MainWindowHandle, WS_SHOWNORMAL); //显示,可以注释掉  SetForegroundWindow(instance.MainWindowHandle); //放到前端 
  • }  }