Beefy Boxes and Bandwidth Generously Provided by pair Networks
Come for the quick hacks, stay for the epiphanies.
 
PerlMonks  

Re: Check if a process is running on Windows

by pgor (Beadle)
on Jun 14, 2004 at 21:46 UTC ( [id://366704]=note: print w/replies, xml ) Need Help??


in reply to Check if a process is running on Windows

use Win32::PerfLib; sub getProcessList { # this code is copied almost verbatim from the Win32::PerfLib docs # it's really convoluted and confusing, but it works for finding # the pid and name of running processes my @proc_objs = (); my %counter = (); Win32::PerfLib::GetCounterNames( '', \%counter ); my %r_counter = map { $counter{$_} => $_ } keys %counter; # retrieve the id for process object my $process_obj = $r_counter{ Process }; # retrieve the id for the process ID counter my $process_id = $r_counter{ 'ID Process' }; # create connection to $server my $perflib = new Win32::PerfLib( '' ); my $proc_ref = {}; # get the performance data for the process object $perflib->GetObjectList( $process_obj, $proc_ref ); $perflib->Close(); my $instance_ref = $proc_ref->{ Objects }->{ $process_obj }->{ Insta +nces }; foreach my $p ( sort keys %{$instance_ref} ) { my $counter_ref = $instance_ref->{ $p }->{ Counters }; foreach my $i ( sort { $a <=> $b } keys %{$counter_ref} ) { if ( $counter_ref->{ $i }->{ CounterNameTitleIndex } == $process +_id ) { push @proc_objs, { id => $counter_ref->{ $i }->{ Counter }, name => $instance_ref->{ $p }->{ Name }, }; } } } return @proc_objs; }

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://366704]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others musing on the Monastery: (2)
As of 2024-04-26 01:17 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found