Perl для системного администрирования




Управление процессами в NT/2000 - часть 8


# получаем список

Win32: : Setupsup: : FnunWindows(^.®windowlist) or

die "Ошибка получения процессов:

".Win32: 'Setiipsup: : Gf;: LastError(). "\n":

превращаем список дескрипторов окон в хэш

ЗАМЕЧАНИЕ: в результате преобразования

элементами хэиа становятся обычные числа,

а не дескрипторы окон. Некоторые функции,

например GetWindowProperties

(которую мы скоро рассмотрим),

не могут использовать эти преобразованные v/c.ra.

Будьте осторожны,

for (is>windowlist){$windowlist{$_}++;

}

и проверяем наличие дочерних окон для каждого окна

foreach $whandle (@windowlist){

(Win32: :Setupsup: : EnumChildWindows($whandIe. \ichildren)){

сохраняем отсортированный список дочерних окон

$children{$whandle} = [sort {$a <=>$b} ©children]:

tt удаляем все дочерние окна из главного хзша,

в результате всех итераций %windowlist будет

содержать только родительские окна без

соответствующих дочерних

foreach $child (@children){

delete $wir.dewlist{$child};

}

}

}

обходим в цикле список родительских окон

и тех окон, у которых нет дочерних,

и рекурсивно печатаем дескриптор каждого

окна и его дочерние окна (если они есть)

foreach my $window (sort {$a <=> $b} keys %windowlist){ &printfamily($window,0);

}

выводим дескриптор заданного окна и его дочерних окон

(рекурсивно) sub printfamily {

начальное окно, насколько глубоко мы ушли по дереву?

my($startwindow,Sievel) = @_;

выводим дескриптор окна с соответствующим отступом

print((" " х Slevel)."$startwindow\n").

return unless (exists $children{$startwindow>):

к дочерних окон не дело сделано

противном случае мы должны

roreach Schildwir.dow (@{

}

Есть еще одна функция, о которой надо сказать, перед тем как двигаться дальше: GetWindowPropertiesO. Функция GetWindowPropertiesO вмещает в себя остальные свойства окон. Например, используя GetWindowPropertiesO, можно получить идентификатор процесса, создавшего конкретное окно. Это разумно совместить с некоторыми из только что рассмотренных возможностей модуля Win32: : IProc.




Содержание  Назад  Вперед