2010-03-28 5 views
5

Mi sono chiesto come farlo per secoli. Sto creando una piccola app e ho bisogno di capire quante app o finestre sono visualizzate nella TaskBar.Ottieni il numero di app in TaskBar

Devo ancora trovare qualche informazione su questo, apprezzerei qualsiasi aiuto.

Grazie :)

risposta

0

Come altri hanno detto che è necessario enumerare tramite Windows utilizzando la funzione Win32 EnumWindows e ottenere il conteggio in questo modo.

È anche possibile enumerare tramite processi utilizzando Process.GetProcesses(); Tuttavia, finestre come explorer windows che non sono un processo separato non verranno visualizzate in tale elenco.

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

Per quanto ne so non c'è modo gestito di accedere alla barra delle applicazioni. Ecco un link che descrive come accedere alla barra delle applicazioni dall'API di Windows. Tuttavia, una scansione rapida non mostrava alcun "numero di elementi" o qualcosa di simile. Tuttavia potrebbe indicarti la giusta direzione.

2

Here è un articolo che mostra come ottenere le finestre, che vengono visualizzate quando si utilizza la combinazione di tasti ALT + TAB.

In sostanza, si ottengono le stesse finestre che vengono visualizzate nella barra delle applicazioni (a meno che non si tratta di una finestra degli strumenti che non viene visualizzato), ma poi di nuovo, si può sempre controllare contro WS_EX_TOOLWINDOW (non mostrato) e WS_EX_APPWINDOW (mostrato).

1

Si può dare un'occhiata alla mia risposta precedente here; la differenza principale qui è che devi solo contare le finestre che corrispondono ai requisiti indicati.