| Цитата(kostofffan @ 15.11.2004, 11:05) | | мне нужно получит список процессов, проходящих в виндах, и их pid |
ОК. Получаем хэш вида "Имя процесса" => PID
| Код | use strict; use Win32::PerfLib; use Win32::Process; my %process_by_name = &get_processes; sub get_processes { my (%counter, %r_counter, %process_by_name); Win32::PerfLib::GetCounterNames('', \%counter); %r_counter = reverse %counter; my $process_obj = $r_counter{'Process'}; my $process_id = $r_counter{'ID Process'}; my $perflib = new Win32::PerfLib(''); my $proc_ref = {}; $perflib->GetObjectList($process_obj, $proc_ref); $perflib->Close(); my $instance_ref = $proc_ref->{'Objects'}->{$process_obj}->{'Instances'}; foreach my $instance (values %{$instance_ref}) { my $counter_ref = $instance->{'Counters'}; foreach my $counter (values %{$counter_ref}) { if($counter->{'CounterNameTitleIndex'} == $process_id) { push @{$process_by_name{$instance->{'Name'}}}, $counter->{'Counter'}; } } } return %process_by_name; } | |