#!/user/local/bin/perl/
use Win32::Process;
use Win32;
##创建记事本进程并打开文件temp.txt
sub ErrorReport{
print Win32::FormatMessage( Win32::GetLastError() );
}
Win32::Process::Create($ProcessObj,
"C:\\WINDOWS\\system32\\notepad.exe",
"notepad temp.txt",
0,
NORMAL_PRIORITY_CLASS,
".")|| die ErrorReport();
$pid = $ProcessObj->GetProcessID();
print("pidnotepad:\t $pid \n");
use Win32::OLE;
$machine= shift || Win32::NodeName();
##下面枚举机器中正在运行的所有进程信息
#$class = "WinMgmts:{impersonationLevel=impersonate}!//$machine";
#$wmi = Win32::OLE->GetObject($class);
$wmi = Win32::OLE->GetObject('winmgmts:\\\\.\\root\\cimv2');##两种方法都可以的
$plist = $wmi->InstancesOf("Win32_Process");
$~ = PROC_LIST;
write;
$~ = PROC_INF;
$n = 0;
foreach $Proc (Win32::OLE::in( $plist )){
write;
$n++;
}
print " ===========================\n";
print " -> Processes number : $n <-\n";
print " ===========================";
# -----------------------------------------------------------------------------
format PROC_LIST =
@||| @|||||||||||||||| @||||||
"PID", "Process Name", " Memory"
---- ----------------- --------
.
format PROC_INF =
@||| @<<<<<<<<<<<<<<<< @|||||||
$Proc->{'ProcessID'},$Proc->{'Name'}, $Proc->{'PeakWorkingSetSize'}