获取TaskBar中的应用程序数量

5 .net c# windows taskbar

我一直想知道如何做这个年龄.我正在创建一个小应用程序,我需要弄清楚TaskBar中显示了多少个应用程序或窗口.

我还没有找到任何关于此的信息,我会感激任何帮助.

谢谢 :)

Cor*_*ory 1

正如其他人所说,您需要使用 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);
Run Code Online (Sandbox Code Playgroud)