C#防GUI窗体多开的一种思路

[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来实现防止多开的目的。

猜你喜欢

转载自www.cnblogs.com/hz1004/p/12931639.html