; Generated by AutoIt Scriptomatic #cs Creation of the list of running processes #ce Func ProcessListing () $a_ProcessDetails = _ProcessListProperties() return $a_ProcessDetails EndFunc #cs Func ProcessListing (ByRef $a_ProcessDetails) Local $wbemFlagReturnImmediately = 0x10 Local $wbemFlagForwardOnly = 0x20 Local $colItems = "" Local $strComputer = "localhost" Local $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2") Local $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_Process", "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly) ; redimensioning the list of process details to the default size Dim $a_ProcessDetails[1][11] ; Getting Process details (if there are some to get) ; and saving them into an bidimensional array If IsObj($colItems) then Local $i = 0 For $objItem In $colItems ReDim $a_ProcessDetails[$i+1][11] $a_ProcessDetails[0][0] = $i ; Handle $a_ProcessDetails[$i][0] = $objItem.Handle ; HandleCount $a_ProcessDetails[$i][1] = $objItem.HandleCount ; ParentProcessId $a_ProcessDetails[$i][2] = $objItem.ParentProcessId ; ProcessId $a_ProcessDetails[$i][3] = $objItem.ProcessId ; Caption $a_ProcessDetails[$i][4] = $objItem.Caption ; Name $a_ProcessDetails[$i][5] = $objItem.Name ; CommandLine $a_ProcessDetails[$i][6] = $objItem.CommandLine ; Description $a_ProcessDetails[$i][7] = $objItem.Description ; ExecutablePath $a_ProcessDetails[$i][8] = $objItem.ExecutablePath ; VirtualSize $a_ProcessDetails[$i][9] = $objItem.VirtualSize ; ThreadCount $a_ProcessDetails[$i][10] = $objItem.ThreadCount ; CreationClassName $a_ProcessDetails[$i][11] = $objItem.CreationClassName ; CreationDate $a_ProcessDetails[$i][12] = WMIDateStringToDate($objItem.CreationDate) ; CSCreationClassName $a_ProcessDetails[$i][13] = $objItem.CSCreationClassName ; CSName $a_ProcessDetails[$i][14] = $objItem.CSName ; ExecutablePath $a_ProcessDetails[$i][15] = $objItem.ExecutablePath ; ExecutionState $a_ProcessDetails[$i][16] = $objItem.ExecutionState ; InstallDate $a_ProcessDetails[$i][17] = WMIDateStringToDate($objItem.InstallDate) ; KernelModeTime $a_ProcessDetails[$i][18] = $objItem.KernelModeTime ; MaximumWorkingSetSize $a_ProcessDetails[$i][19] = $objItem.MaximumWorkingSetSize ; MinimumWorkingSetSize $a_ProcessDetails[$i][20] = $objItem.MinimumWorkingSetSize ; OSCreationClassName $a_ProcessDetails[$i][21] = $objItem.OSCreationClassName ; OSName $a_ProcessDetails[$i][22] = $objItem.OSName ; OtherOperationCount $a_ProcessDetails[$i][23] = $objItem.OtherOperationCount ; OtherTransferCount $a_ProcessDetails[$i][24] = $objItem.OtherTransferCount ; PageFaults $a_ProcessDetails[$i][25] = $objItem.PageFaults ; PageFileUsage $a_ProcessDetails[$i][26] = $objItem.PageFileUsage ; PeakPageFileUsage $a_ProcessDetails[$i][27] = $objItem.PeakPageFileUsage ; PeakVirtualSize $a_ProcessDetails[$i][28] = $objItem.PeakVirtualSize ; PeakWorkingSetSize $a_ProcessDetails[$i][29] = $objItem.PeakWorkingSetSize ; Priority $a_ProcessDetails[$i][30] = $objItem.Priority ; PrivatePageCount $a_ProcessDetails[$i][31] = $objItem.PrivatePageCount ; QuotaNonPagedPoolUsage $a_ProcessDetails[$i][32] = $objItem.QuotaNonPagedPoolUsage ; QuotaPagedPoolUsage $a_ProcessDetails[$i][33] = $objItem.QuotaPagedPoolUsage ; QuotaPeakNonPagedPoolUsage $a_ProcessDetails[$i][34] = $objItem.QuotaPeakNonPagedPoolUsage ; QuotaPeakPagedPoolUsage $a_ProcessDetails[$i][35] = $objItem.QuotaPeakPagedPoolUsage ; ReadOperationCount $a_ProcessDetails[$i][36] = $objItem.ReadOperationCount ; ReadTransferCount $a_ProcessDetails[$i][37] = $objItem.ReadTransferCount ; SessionId $a_ProcessDetails[$i][38] = $objItem.SessionId ; Status $a_ProcessDetails[$i][39] = $objItem.Status ; TerminationDate $a_ProcessDetails[$i][40] = WMIDateStringToDate($objItem.TerminationDate) ; UserModeTime $a_ProcessDetails[$i][41] = $objItem.UserModeTime ; WindowsVersion $a_ProcessDetails[$i][42] = $objItem.WindowsVersion ; WorkingSetSize $a_ProcessDetails[$i][43] = $objItem.WorkingSetSize ; WriteOperationCount $a_ProcessDetails[$i][44] = $objItem.WriteOperationCount ; WriteTransferCount $a_ProcessDetails[$i][45] = $objItem.WriteTransferCount $i = $i + 1 Next Else Msgbox(0,"WMI Output","No WMI Objects Found for class: " & "Win32_Process" ) Endif EndFunc Func WMIDateStringToDate($dtmDate) Return (StringMid($dtmDate, 5, 2) & "/" & _ StringMid($dtmDate, 7, 2) & "/" & StringLeft($dtmDate, 4) & " " & StringMid($dtmDate, 9, 2) & ":" & StringMid($dtmDate, 11, 2) & ":" & StringMid($dtmDate,13, 2)) EndFunc #ce