Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Системное программирование > функции winapp'а


Автор: kostofffan 14.11.2004, 00:07
как вызвать функцию winapp'а из perl?

Автор: Secandr 14.11.2004, 09:31
А зачем?

Автор: kostofffan 15.11.2004, 11:05
мне нужно получит список процессов, проходящих в виндах, и их pid

Автор: chaos 16.11.2004, 07:30
посмотри на cpan.org, там были модули winAPI

Автор: kostofffan 16.11.2004, 12:02
спасибо, chaos, тоже выход!
Гляну...

Автор: Sadok 16.11.2004, 17:08
Цитата(kostofffan @ 15.11.2004, 11:05)
мне нужно получит список процессов, проходящих в виндах, и их pid

use Win32::Process;

Идет в стандартной поставке ActiveState'а


Автор: kostofffan 17.11.2004, 11:27
Sadok, читал я эти мануалы, но ничего хорошего там не нашел. Есть там как создать процесс и управлять им, но о получении нужной мне информации и близко ничего нет!

Автор: Sadok 17.11.2004, 21:40
Цитата(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;
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)