Проверьте, сфокусировано ли окно - PullRequest
0 голосов
/ 15 апреля 2019

Я делаю наложение ac # для игры.Он появляется в игре, но не скрывается, если игра свернута, поэтому мне интересно, есть ли способ проверить, свернуто ли окно или не в фокусе.Я искал об этом в Google, но не смог найти ничего полезного.

1 Ответ

1 голос
/ 15 апреля 2019

Чтобы проверить состояние окна (нормальное, развернутое или свернутое), когда у вас есть название заголовка окна или дескриптор окна, вы можете использовать этот код:

[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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...