Avatar of celtician
celtician
Flag for American Samoa asked on

Retrieve process time in memory in VB

I have certain scrip that gets process amount of memory, however i need not add another case where i need to check also the TIME in memory of the process. I know that when memory is over 40MB it causes trouble, so the process is killed by the script, however i need also to get the time in memory because when its longer than certain minutes it causes trouble as well.

What should i add?

Option Explicit
Dim objWMIService, objProcess, objFSO, objTextFile
dim colProcess,colServices, colItems
dim objItem, objService
dim objFSO2, objTextFile2
Dim strComputer, strProcessKill, strProcessMem
Dim memLimit, processMem
Dim mustKill
Dim WshShell
Const ForAppending = 8

Set WshShell = WScript.CreateObject("WScript.Shell") 
strComputer = "."
strProcessKill = "'DLLHOST.EXE'"
strProcessMem = "'DLLHOST'"
memLimit = 40000
mustKill = 0
 
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcess = objWMIService.ExecQuery ("Select * from Win32_Process Where Name = " & strProcessKill )



dim intRC
For Each objProcess in colProcess    
    processMem = objProcess.WorkingSetSize/1024
    Set objFSO2 = CreateObject("Scripting.FileSystemObject")
    Set objTextFile2 = objFSO2.OpenTextFile ("c:\ejecuciones_dllhost.txt", ForAppending, True)
    objTextFile2.WriteLine(now & vbnewline & " Process has been CHECKED with " & processMem & " Kb" & vbnewline & vbNewLine)
    objTextFile2.Close

                If processMem >= memLimit Then
		       mustKill = 1
                End If  
  
    if mustKill = 1 then		
 	Set objFSO = CreateObject("Scripting.FileSystemObject")
	Set objTextFile = objFSO.OpenTextFile ("c:\informe_dllhost.txt", ForAppending, True)

	objTextFile.WriteLine(now & vbnewline & " Process has been killed with " & processMem & " Kb" & vbnewline & vbNewLine)
	objTextFile.Close
	wshShell.Run "cmd /k C:\pskill.exe -accepteula dllhost.exe", 1, True	
	WScript.Quit
    end if
Next
 
WScript.Quit

Open in new window

dllhost.PNG
VB ScriptVisual Basic ClassicWindows 2000

Avatar of undefined
Last Comment
x-men

8/22/2022 - Mon
aikimark

You would do well to move the FSO object instantiation (for your logging) outside of the loop.
x-men

There is:
CreationDate :  date process was created (Ex.: 20150715121535.303886+060)


UserModeTime and KernelModeTime : time spent in each mode
David L. Hansen

You may benefit from the ASP profiler, which could help get the time stamps for you. Beyond that, if you work in Visual Studio, the built in profiler is a great tool for doing serious, in-depth, performance analysis.
All of life is about relationships, and EE has made a viirtual community a real community. It lifts everyone's boat
William Peck
celtician

ASKER
How would i use a CreationDate instance for this purpose?
ASKER CERTIFIED SOLUTION
x-men

THIS SOLUTION ONLY AVAILABLE TO MEMBERS.
View this solution by signing up for a free trial.
Members can start a 7-Day free trial and enjoy unlimited access to the platform.
See Pricing Options
Start Free Trial
GET A PERSONALIZED SOLUTION
Ask your own question & get feedback from real experts
Find out why thousands trust the EE community with their toughest problems.