[DllImport("user32")] private static extern int SetForegroundWindow(IntPtr hwnd); [DllImport("user32")] private static extern IntPtr FindWindow(string lpClassName, string lpWindowName); protected override void OnStartup(StartupEventArgs e) { IntPtr hHandle = FindWindow(null, TestWindow.title); if (hHandle != IntPtr.Zero) { //选中当前的句柄窗口 SetForegroundWindow(hHandle); Application.Current.Shutdown(); return; } base.OnStartup(e); }
如果窗体标题不重要,比如在WPF窗体设置WindowStyle="None"。此时可以设置一个GUID的窗体title,通过这个窗体title来实现防止多开的目的。