如何检测当前WPF窗口是否在用户会话前台?

时间:2011-03-01 18:26:45

标签: wpf windows-7 window

我使用System.Windows.Window.IsActive来检测窗口是否在前台,并且在某些情况下它可以正常工作。但我发现它没有的情况,我想知道是否有任何方法可以检测到它。

1 个答案:

答案 0 :(得分:3)

以下方法有效,除非仅后台进程获得焦点。 Windows桌面就是这种情况。它窃取了前景窗口的状态,但它不在前台。

[DllImport("user32.dll")]
static extern IntPtr GetForegroundWindow();

public bool IsForeground()
{
     Window window = Application.Current.MainWindow;
     IntPtr windowHandle = new WindowInteropHelper(window).Handle;
     IntPtr foregroundWindow = GetForegroundWindow();
     return windowHandle == foregroundWindow;
}