Listing Windows processes with Win32::Process::List
This article explains how to get a list of processes from Windows using Perl and the CPAN module Win32::Process::List. The following Perl script for Windows
#! perl use warnings; use strict; use Win32::Process::List; my $P = Win32::Process::List->new(); my %list = $P->GetProcesses(); foreach my $pid ( sort {$a <=> $b} keys %list ) { my $name = $list{$pid}; print "$pid\t$name\n"; }
produces output like this:
0 [System Process] 4 System 200 taskeng.exe 432 smss.exe 448 svchost.exe 500 csrss.exe 504 RTNICDiag.exe 544 csrss.exe
The process ID number and name of each process is printed.
Notes:
sort {$a <=> $b}
sorts the keys into
numerical order.
Using the process list
The list of processes can be used for other purposes. Here is a script which halts all instances of a particular program, in this case "chrome.exe", which is the Google Chrome web browser.
#! perl use warnings; use strict; use Win32::Process::List; use Win32::Process; my $P = Win32::Process::List->new(); my %list = $P->GetProcesses(); foreach my $pid ( keys %list ) { my $name = $list{$pid}; if ($name =~ /chrome\.exe/) { my $exitcode; Win32::Process::KillProcess ($pid, \$exitcode); } }This also makes use of Win32::Process for its "KillProcess" function, which halts the process identified by
$pid
.
Notes: The variable $exitcode
is necessary to
call the function. Its value is ignored.
Copyright © Ben Bullock 2009-2024. All
rights reserved.
For comments, questions, and corrections, please email
Ben Bullock
(benkasminbullock@gmail.com).
/
Privacy /
Disclaimer