2010-03-28 17 views
5

Me he estado preguntando cómo hacer esto por años. Estoy creando una pequeña aplicación y necesito averiguar cuántas aplicaciones o ventanas se muestran en la Barra de tareas.Obtener el número de aplicaciones en la barra de tareas

Aún no he encontrado ninguna información al respecto, agradecería cualquier ayuda.

Gracias :)

Respuesta

0

Como han dicho otros, necesita enumerar a través de las ventanas con la función Win32 EnumWindows y obtener su conteo de esa manera.

También puede enumerar a través de procesos usando Process.GetProcesses(); Sin embargo, ventanas como las ventanas del explorador que no son un proceso separado no aparecerán en esa lista.

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

Por lo que yo sé no hay manera de acceder logrado la barra de tareas. Aquí hay un link que describe cómo acceder a la barra de tareas mediante la API de Windows. Sin embargo, un escaneo rápido no mostró ninguna "cantidad de elementos" o algo similar. Aún así, podría apuntarle en la dirección correcta.

2

Here es un artículo que muestra cómo obtener las ventanas, que se muestran cuando usa la combinación de teclas ALT + TAB.

Básicamente, obtendrá las mismas ventanas que se muestran en la barra de tareas (a menos que sea una ventana de herramientas que no se muestra), pero por otra parte, siempre se puede comprobar en contra WS_EX_TOOLWINDOW (no se muestra) y WS_EX_APPWINDOW (mostrado).

1

Puede echar un vistazo a mi respuesta anterior here; la principal diferencia aquí es que solo debe contar las ventanas que coinciden con los requisitos dados.

Cuestiones relacionadas