WPF 精修篇 窗体唯一(Single) 显示在最前
Posted lonelyxmas
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF 精修篇 窗体唯一(Single) 显示在最前相关的知识,希望对你有一定的参考价值。
原文:WPF 精修篇 窗体唯一(Single) 显示在最前
只运行一个窗体 并在一次点击时 显示到最前
发现用
SetForegroundWindow 并不是稳定的有效
最后使用 SetWindowPos
贴码了
- public const int HWND_TOPMOST = -1;
- public const int HWND_NOTOPMOST = -2;
- protected override void OnStartup(StartupEventArgs e)
- {
-
- bool isNewInstance;
- base.OnStartup(e);
- Mutex mutex = new Mutex(true, "Single", out isNewInstance);
- if (isNewInstance != true)
- {
- IntPtr intPtr = FindWindowW(null, "Single");
- if (intPtr != IntPtr.Zero)
- {
-
-
- SetWindowPos(intPtr, HWND_TOPMOST, 0, 0, 0, 0, 1 | 2);
- SetWindowPos(intPtr, HWND_NOTOPMOST, 0, 0, 0, 0, 1 | 2);
- SetForegroundWindow(intPtr);
-
- }
-
- Shutdown();
- }
- }
- [DllImport("User32", CharSet = CharSet.Unicode)]
- static extern IntPtr FindWindowW(String lpClassName, String lpWindowName);
- [DllImport("User32", CharSet = CharSet.Unicode)]
- static extern Boolean SetForegroundWindow(IntPtr hWnd);
- [DllImport("user32.dll", CharSet = CharSet.Auto)]
- private static extern int SetWindowPos(IntPtr hWnd, int hWndInsertAfter, int x, int y, int Width, int Height, int flags);
-
- [DllImport("user32.dll")]
- public static extern IntPtr SetFocus(IntPtr hWnd);
代码:
https://download.csdn.net/download/q465162770/12003540
以上是关于WPF 精修篇 窗体唯一(Single) 显示在最前的主要内容,如果未能解决你的问题,请参考以下文章