diff --git a/src/Shared/HandyControl_Shared/Tools/Helper/WindowHelper.cs b/src/Shared/HandyControl_Shared/Tools/Helper/WindowHelper.cs
index 23ec5e0f..6bab0d0d 100644
--- a/src/Shared/HandyControl_Shared/Tools/Helper/WindowHelper.cs
+++ b/src/Shared/HandyControl_Shared/Tools/Helper/WindowHelper.cs
@@ -20,7 +20,11 @@ public static class WindowHelper
/// 获取当前应用中处于激活的一个窗口
///
///
- public static Window GetActiveWindow() => Application.Current.Windows.OfType().SingleOrDefault(x => x.IsActive);
+ public static Window GetActiveWindow()
+ {
+ var activeWindow = InteropMethods.GetActiveWindow();
+ return Application.Current.Windows.OfType().FirstOrDefault(x => x.GetHandle() == activeWindow);
+ }
private static readonly BitArray _cacheValid = new((int) InteropValues.CacheSlot.NumSlots);
diff --git a/src/Shared/HandyControl_Shared/Tools/Interop/InteropMethods.cs b/src/Shared/HandyControl_Shared/Tools/Interop/InteropMethods.cs
index 4749a44e..23fec702 100644
--- a/src/Shared/HandyControl_Shared/Tools/Interop/InteropMethods.cs
+++ b/src/Shared/HandyControl_Shared/Tools/Interop/InteropMethods.cs
@@ -348,6 +348,9 @@ internal class InteropMethods
[DllImport(InteropValues.ExternDll.User32)]
internal static extern IntPtr GetWindow(IntPtr hwnd, int nCmd);
+ [DllImport(InteropValues.ExternDll.User32)]
+ internal static extern IntPtr GetActiveWindow();
+
[DllImport(InteropValues.ExternDll.User32)]
[return: MarshalAs(UnmanagedType.Bool)]
internal static extern bool IsWindowVisible(IntPtr hwnd);