using System.IO; using System.Runtime.InteropServices; namespace XafPet.Desktop; /// 简单的单实例检测(按进程名匹配) public static class SingleInstanceHelper { [DllImport("user32.dll")] private static extern bool SetForegroundWindow(IntPtr hWnd); public static bool TryEnterFirstInstance() { var name = System.Diagnostics.Process.GetCurrentProcess().ProcessName; var instances = System.Diagnostics.Process.GetProcessesByName(name); if (instances.Length > 1) { SetForegroundWindow(instances[0].MainWindowHandle); return false; } return true; } }