【问题标题】:Check if a window is focused检查窗口是否聚焦
【发布时间】:2019-04-15 05:09:10
【问题描述】:

我正在为游戏制作 C# 叠加层。 它出现在游戏中,但如果游戏被最小化它不会隐藏,所以我想知道是否有任何方法可以检查窗口是否被最小化/失焦。我在谷歌上搜索过,但找不到任何有用的东西。

【问题讨论】:

标签: c# windows winforms


【解决方案1】:

当您有窗口标题名称或窗口句柄时,要检查窗口的状态(正常、最大化或最小化),您可以使用以下代码:

[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool IsIconic(IntPtr hWnd);

[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool IsZoomed(IntPtr hWnd);

enum WinState
{
    None,
    Maximized,
    Minimized,
    Normal,
}

private static WinState GetWindowState(IntPtr hWnd)
{
    WinState winState = WinState.None;
    if (hWnd != IntPtr.Zero)
    {
        if (IsIconic(hWnd))
        {
            winState = WinState.Minimized;
        }
        else if (IsZoomed(hWnd))
        {
            winState = WinState.Maximized;
        }
        else
        {
            winState = WinState.Normal;
        }
    }

    return winState;
}

private static WinState GetWindowState(string windowCaption)
{
    return GetWindowState((IntPtr)FindWindow(null, windowCaption));
}

用法:

string windowCaption = "New Tab - Google Chrome";
WinState winState = GetWindowState(windowCaption);

【讨论】:

  • 很高兴我能帮上忙!如果您的问题已得到解答,请确保接受答案以供进一步参考。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-05
  • 2013-05-08
  • 1970-01-01
相关资源
最近更新 更多