如何确定我的应用程序是否处于活动状态(具有焦点)

2024-03-29

有没有办法判断我的应用程序是否处于活动状态,即它的任何窗口都有 .IsActive=true ?

我正在编写信使应用程序,并希望它在不活动且有新消息到达时在任务栏中闪烁。


使用 P/Invoke 和循环

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

private static bool IsActive(Window wnd)
{
    // workaround for minimization bug
    // Managed .IsActive may return wrong value
    if (wnd == null) return false;
    return GetForegroundWindow() == new WindowInteropHelper(wnd).Handle;
}

public static bool IsApplicationActive()
{
    foreach (var wnd in Application.Current.Windows.OfType<Window>())
        if (IsActive(wnd)) return true;
    return false;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何确定我的应用程序是否处于活动状态(具有焦点) 的相关文章

随机推荐