busysignal
Active Members-
Posts
344 -
Joined
-
Last visited
Profile Information
-
Location
USA
-
Interests
Computers in general, programming, and automation of anything!
busysignal's Achievements
Universalist (7/7)
0
Reputation
-
I did get that same error as you reported but just hung till you pressed ESC. I noticed that it did not output the process list so I some code from the original post and integrated the last posted code change for testing. See if it works for you. #include <Array.au3>; Only for _ArrayDisplay() ; Author: PsaltyDS - _ProcessListProperties ; Status: Demo ; Get collection of all processes from Win32_PerfFormattedData_PerfProc_Process ; Have to use an SWbemRefresher to pull the collection, or all Perf data will be zeros Global $oWMI = ObjGet("winmgmts:{impersonationLevel=impersonate,authenticationLevel=pktPrivacy}!\\" & @ComputerName & "\root\cimv2") Global $oRefresher = ObjCreate("WbemScripting.SWbemRefresher") Global $colRefProcs = $oRefresher.AddEnum($oWMI, "Win32_PerfFormattedData_PerfProc_Process" ).objectSet $oRefresher.Refresh ; Globals - Install a custom error handler - added Global $oMyError = ObjEvent("AutoIt.Error","MyErrFunc"), $f_COMError = False Global $avRET, $iPID HotKeySet("{ESC}", "_Quit") ; Loop to watch for memory leak While 1 _ProcessListProperties() $avRET = _ProcessListProperties() ; added _ArrayDisplay($avRET, "All Processes") ; added Sleep(20) WEnd Func _Quit() Exit EndFunc ;==>_Quit ;=============================================================================== ; Function Name: _ProcessListProperties() ; Description: Get various properties of a process, or all processes ; Call With: _ProcessListProperties( [$Process [, $sComputer]] ) ; Parameter(s): (optional) $Process - PID or name of a process, default is "" (all) ; (optional) $sComputer - remote computer to get list from, default is local ; Requirement(s): AutoIt v3.2.4.9+ ; Return Value(s): On Success - Returns a 2D array of processes, as in ProcessList() ; with additional columns added: ; [0][0] - Number of processes listed (can be 0 if no matches found) ; [1][0] - 1st process name ; [1][1] - 1st process PID ; [1][2] - 1st process Parent PID ; [1][3] - 1st process owner ; [1][4] - 1st process priority (0 = low, 31 = high) ; [1][5] - 1st process executable path ; [1][6] - 1st process CPU usage ; [1][7] - 1st process memory usage ; [1][8] - 1st process creation date/time = "MM/DD/YYY hh:mm:ss" (hh = 00 to 23) ; [1][9] - 1st process command line string ; ... ; [n][0] thru [n][9] - last process properties ; On Failure: Returns array with [0][0] = 0 and sets @Error to non-zero (see code below) ; Author(s): PsaltyDS at http://www.autoitscript.com/forum ; Date/Version: 07/02/2008 -- v2.0.2 ; Notes: If an integer PID or string process name is provided and no match is found, ; then [0][0] = 0 and @error = 0 (not treated as an error, same as ProcessList) ; This function requires admin permissions to the target computer. ; All properties come from the Win32_Process class in WMI. ; To get time-base properties (CPU and Memory usage), a 100ms SWbemRefresher is used. ;=============================================================================== Func _ProcessListProperties($Process = "", $sComputer = ".") Local $sUserName, $sMsg, $sUserDomain, $avProcs, $dtmDate Local $avProcs[1][2] = [[0, ""]], $n = 1 ; Convert PID if passed as string If StringIsInt($Process) Then $Process = Int($Process) ; Connect to WMI and get process objects ; $oWMI = ObjGet("winmgmts:{impersonationLevel=impersonate,authenticationLevel=pktPrivacy}!\\" & $sComputer & "\root\cimv2") If IsObj($oWMI) Then ; Get collection processes from Win32_Process If $Process = "" Then ; Get all $colProcs = $oWMI.ExecQuery("select * from win32_process") ElseIf IsInt($Process) Then ; Get by PID $colProcs = $oWMI.ExecQuery("select * from win32_process where ProcessId = " & $Process) Else ; Get by Name $colProcs = $oWMI.ExecQuery("select * from win32_process where Name = '" & $Process & "'") EndIf If IsObj($colProcs) Then ; Return for no matches If $colProcs.count = 0 Then Return $avProcs ; Size the array ReDim $avProcs[$colProcs.count + 1][10] $avProcs[0][0] = UBound($avProcs) - 1 ; For each process... For $oProc In $colProcs ; [n][0] = Process name $avProcs[$n][0] = $oProc.name ; [n][1] = Process PID $avProcs[$n][1] = $oProc.ProcessId ; [n][2] = Parent PID $avProcs[$n][2] = $oProc.ParentProcessId ; [n][3] = Owner If $oProc.GetOwner($sUserName, $sUserDomain) = 0 Then $avProcs[$n][3] = $sUserDomain & "\" & $sUserName ; [n][4] = Priority $avProcs[$n][4] = $oProc.Priority ; [n][5] = Executable path $avProcs[$n][5] = $oProc.ExecutablePath ; [n][8] = Creation date/time $dtmDate = $oProc.CreationDate If $dtmDate <> "" Then ; Back referencing RegExp pattern from weaponx Local $sRegExpPatt = "\A(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(?:.*)" $dtmDate = StringRegExpReplace($dtmDate, $sRegExpPatt, "$2/$3/$1 $4:$5:$6") EndIf $avProcs[$n][8] = $dtmDate ; [n][9] = Command line string $avProcs[$n][9] = $oProc.CommandLine ; increment index $n += 1 Next Else SetError(2); Error getting process collection from WMI EndIf ; release the collection object $colProcs = 0 $oRefresher.Refresh ; Get PerfProc data For $oProc In $colRefProcs ; Find it in the array For $n = 1 To $avProcs[0][0] If $avProcs[$n][1] = $oProc.IDProcess Then ; [n][6] = CPU usage $avProcs[$n][6] = $oProc.PercentProcessorTime ; [n][7] = memory usage $avProcs[$n][7] = $oProc.WorkingSet ExitLoop EndIf Next Next Else SetError(1); Error connecting to WMI EndIf ; Return array Return $avProcs EndFunc ;==>_ProcessListProperties
-
Very cool effect! Kudos! Cheers!
-
@Celeri, So far it all looks good to me. I just started running your 1.07 version. Regarding your question, there are "Add-Ons" for Mozilla and "Widgets" for Opera. BHO's I think are for IE only. Cheers..
-
@Celeri, yeah it has been a while and just now returning back to the forums. All you new additions sound great. I like the idea that it is non-destructive. With one click you can make a mess. Look forward to the latest version. Cheer..
-
@Firestorm: Nice, I was looking or something like this for a small project I am about to start on. Cheers!
-
@Alek, nice work. Great MDI example! Cheers!
-
@GEOSoft, nice UDF and to all the additions made. Cheers!
-
Celeri, I check out the code from the first post and found that the Error Message display is not in english. I kinda understand it and had not errors. When you have time could you update the that function. The output from your script is really handy. Cheer!
-
@ChrisL, that is a pretty creative way of doing it. This will come in handy. Cheers!
-
@JD, those are some interesting projects you listed. I has been slacking on some of my projects that I would like to get posted some time this year as time allows. Too many bits and pieces, just need to put things together. Are the othre items you listed post or are they on your site for download? Cheers ..
-
@Eusebio, very cool tool. I have been getting the .FLV or .SWF files from my cache. This helps out a lot.. Thx to @GtaSpider for the GUI. Cheers..
-
@coptang, the idea is pretty interesting. I gives me some ideas. Thx Cheers..
-
@Valuater, the Demo by Dhilip really shows of your _ControlHover() functionality.. Two-Thumbs Up! Cheers..
-
@jerome, nice library of functions. I will have to build a test script to use what you have put together and give it a try. I take it you built the dbf.dll yourself? Cheers..
-
@Danny35d, interesting implementation. Is it necessary to be an Admin to use your script? Cheers..