Here's some code I have sitting around, though it now seems
broken since I've upgraded to Perl 5.6.1 (along with many other
Win32 modules in ActiveState).
See the book Win32 Perl Scripting: The Administrator's Handbook
by Dave Roth.
use Win32::IProcess 1.4, qw( PROCESS_ALL_ACCESS
PROCESS_QUERY_INFORMATION
PROCESS_TERMINATE
NONINHERITED
);
my $pobj = new Win32::IProcess;
getPids();
sub getPids
{
my ( @proc_list, @result );
$pobj->EnumProcesses( \@proc_list ) or
die "Unable to enumerate processes: $!";
foreach my $process ( @proc_list )
{
my $pid = $process->{ProcessId};
my $name = lc($process->{ProcessName});
print STDERR $pid, "\t", $name, "\n";
}
return @result;
}
|