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