2010-03-28 11 views
5

Zastanawiam się, jak to zrobić na wieki. Tworzę małą aplikację i muszę się dowiedzieć, ile aplikacji lub okien jest wyświetlanych na pasku zadań.Uzyskaj liczbę aplikacji w TaskBar

Nie znalazłem jeszcze żadnych informacji na ten temat, byłbym wdzięczny za wszelką pomoc.

Dziękuję :)

Odpowiedz

0

Jak już powiedzieli inni, trzeba wyliczyć w oknach przy użyciu funkcji Win32 EnumWindows i uzyskać taką liczbę.

Można również wyliczyć za pomocą procesów używających Process.GetProcesses();. Jednak takie okna, jak okna eksploratora, które nie są oddzielnymi procesami, nie będą wyświetlane na tej liście.

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

O ile wiem, nie ma udało sposobem uzyskiwania dostępu do paska zadań. Oto link, który opisuje, jak uzyskać dostęp do paska zadań za pomocą interfejsu API systemu Windows. Jednak szybkie skanowanie nie wykazało żadnej "liczby przedmiotów" ani czegoś podobnego. Nadal może wskazać ci właściwy kierunek.

2

Here to artykuł pokazujący, jak uzyskać okna, które są wyświetlane, gdy używana jest kombinacja klawiszy ALT + TAB.

Zasadniczo, otrzymasz te same okna, które są wyświetlane na pasku zadań (o ile nie jest to okno narzędzia, który nie jest wyświetlany), ale potem znowu, zawsze można sprawdzić przed WS_EX_TOOLWINDOW (nie pokazano) i WS_EX_APPWINDOW (pokazano).

1

Możesz rzucić okiem na moją poprzednią odpowiedź here; główna różnica polega na tym, że wystarczy policzyć okna, które spełniają podane wymagania.

Powiązane problemy