Получите количество приложений в TaskBar

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

Я должен все же найти любую информацию об этом вообще, я ценил бы любую справку вообще.

Спасибо :)

5
задан 28 March 2010 в 17:07
поделиться

4 ответа

Как уже говорили другие, вам нужно перечислить через окна, используя функцию Win32 EnumWindows, и таким образом получить свой счет .

Вы также можете перечислить процессы, используя Process.GetProcesses (); Однако окна, такие как окна проводника, которые не являются отдельным процессом, не будут отображаться в этом списке.

int appCount = 0;

public bool EnumerateWindows(IntPtr hwnd, IntPtr lParam)
{
    if (IsWindowVisible(hwnd))
    {
        StringBuilder sb = new StringBuilder();
        string text = "";

        GetWindowText(hwnd, sb, 1024);
        text = sb.ToString();

        if (text != string.Empty && text != "Program Manager")
        {
            appCount++;
        }
    }

    return true;
}

private int GetAppCount()
{
    appCount = 0;
    EnumWindows(EnumerateWindows, new IntPtr(0));

    return appCount;
}

internal delegate bool EnumThreadWindowsCallback(IntPtr hwnd, IntPtr lParam);

[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
internal static extern bool EnumWindows(EnumThreadWindowsCallback callback, IntPtr lParam);

[DllImport("user32.dll", CharSet = CharSet.Auto)]
internal static extern bool IsWindowVisible(IntPtr hwnd);

[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
internal static extern int GetWindowText(IntPtr hWnd, [Out, MarshalAs(UnmanagedType.LPTStr)] StringBuilder lpString, int nMaxCount);
0
ответ дан 15 December 2019 в 06:22
поделиться

Вы можете посмотреть мой предыдущий ответ здесь ; основное отличие здесь в том, что вам просто нужно подсчитать окна, соответствующие заданным требованиям.

1
ответ дан 15 December 2019 в 06:22
поделиться

Насколько я знаю, не существует управляемого способа доступа к панели задач. Вот ссылка , которая описывает, как получить доступ к панели задач с помощью Windows API. Однако при быстром сканировании я не обнаружил «количества элементов» или чего-то подобного. Тем не менее, это может указать вам правильное направление.

0
ответ дан 15 December 2019 в 06:22
поделиться

Вот статья, в которой показано, как получить окна, которые отображаются при использовании комбинации клавиш ALT+TAB.

В основном, вы получите те же окна, которые отображаются на панели задач (если только это не окно инструмента, которое не отображается), но опять же, вы всегда можете проверить WS_EX_TOOLWINDOW (не показано) и WS_EX_APPWINDOW (показано).

2
ответ дан 15 December 2019 в 06:22
поделиться