Я задавался вопросом, как сделать это целую вечность. Я создаю немного приложения, и я должен выяснить, сколько приложений или окон отображено в TaskBar.
Я должен все же найти любую информацию об этом вообще, я ценил бы любую справку вообще.
Спасибо :)
Как уже говорили другие, вам нужно перечислить через окна, используя функцию 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);
Вы можете посмотреть мой предыдущий ответ здесь ; основное отличие здесь в том, что вам просто нужно подсчитать окна, соответствующие заданным требованиям.
Насколько я знаю, не существует управляемого способа доступа к панели задач. Вот ссылка , которая описывает, как получить доступ к панели задач с помощью Windows API. Однако при быстром сканировании я не обнаружил «количества элементов» или чего-то подобного. Тем не менее, это может указать вам правильное направление.
Вот статья, в которой показано, как получить окна, которые отображаются при использовании комбинации клавиш ALT+TAB.
В основном, вы получите те же окна, которые отображаются на панели задач (если только это не окно инструмента, которое не отображается), но опять же, вы всегда можете проверить WS_EX_TOOLWINDOW (не показано) и WS_EX_APPWINDOW (показано).