SingleInstanceHelper.cs 676 B

1234567891011121314151617181920212223
  1. using System.IO;
  2. using System.Runtime.InteropServices;
  3. namespace XafPet.Desktop;
  4. /// <summary>简单的单实例检测(按进程名匹配)</summary>
  5. public static class SingleInstanceHelper
  6. {
  7. [DllImport("user32.dll")]
  8. private static extern bool SetForegroundWindow(IntPtr hWnd);
  9. public static bool TryEnterFirstInstance()
  10. {
  11. var name = System.Diagnostics.Process.GetCurrentProcess().ProcessName;
  12. var instances = System.Diagnostics.Process.GetProcessesByName(name);
  13. if (instances.Length > 1)
  14. {
  15. SetForegroundWindow(instances[0].MainWindowHandle);
  16. return false;
  17. }
  18. return true;
  19. }
  20. }