C# - Получите список открытых задач

В CSS уже есть правила для нечетных и четных потомков.

https://www.w3.org/Style/Examples/007/evenodd.en.html

Вы можете установить идентификатор для таблицы и работать со своим стилем из этого , так что вам не придется стилизовать каждый элемент таблицы вручную. Предположим, у вас есть

, вы можете написать свой CSS как:

#beta tr:nth-child(even) {color:limegreen;}
#beta tr:nth-child(odd) {color:lime;}

Это приведет к тому, что ваши четные строки будут иметь стиль limegreen, а ваши нечетные строки - lime. То же самое можно применить к

и тому подобное. Это еще один пример, но с использованием списков , из ответа SO.

10
задан Adaline Simonian 13 August 2017 в 09:21
поделиться

4 ответа

Эта статья должна в значительной степени сказать Вам точно, что сделать, она показывает, как создать Ваше собственное переключение задач и включает код, должен был перечислить все окна и определить, являются ли они "задачами", и она показывает Вам, как использовать PrintWindow api для получения предварительных просмотров на XP.

http://msdn.microsoft.com/en-us/library/ms997649.aspx

Кроме того, вот сообщение в блоге, которое говорит об алгоритме, используемом для определения то, что обнаруживается в представлении Alt+Tab. В основном необходимо проверить WS_EX_APPWINDOW и WS_EX_TOOLWINDOW наряду с тем, если окно имеет владельца.

5
ответ дан 4 December 2019 в 01:03
поделиться

Я не пробовал, но подозреваю что-то вроде этого:

using System.Diagnostics;
static void MyFunc()
{
    Process[] processes = Process.GetProcesses();
    foreach(Process p in processes)
    {
       if (p.MainWindowHandle != 0)
       { // This is a GUI process
       }
       else
       { // this is a non-GUI / invisible process
       }
    }
}

Суть в том, чтобы проверять каждый процесс для WindowHandle.

1
ответ дан 4 December 2019 в 01:03
поделиться

С точки зрения API (Win32) нет такой вещи, как Задачи (по крайней мере, та, которую не выполняет диспетчер задач Windows). / Alt-Tab показывает).

Эти «Задачи» на самом деле являются окнами верхнего уровня.

Таким образом, чтобы получить их список, вам нужно перечислить окна (для этого здесь PInvoke ).

Затем посмотрите на стиль окон, чтобы определить, действительно ли они являются окнами верхнего уровня.

5
ответ дан 4 December 2019 в 01:03
поделиться

@ abelenky17

Я подозреваю, что это не охватит все случаи, например, есть процессы, которые имеют несколько верхних окна уровня (которые все появляются в диспетчере задач). Рассмотрим, к примеру: FireFox, Windows Explorer, IE и т. Д ... эти приложения могут иметь несколько окон на рабочем столе. Кроме того, он не будет обрабатывать сценарии терминальных сеансов должным образом (поскольку вы перечисляете все процессы, запущенные в системе).

@Dan C.

Делать что-то вроде этого:

p.ProcessName != "explorer"

вам кажется нормальным? Пахнет плохо.

0
ответ дан 4 December 2019 в 01:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: