ok example from MS on how to wait for an event.
the "WITHIN" is used as the win32_process provider doesnt support (whats the word im looking for) immediate notification of events and you have to poll. the 10 are seconds. change the 'Win32_Process' to Win32_NTLogEvent, as suggested above (i think you can also forget about the WITHIN clause) and whenever a new Win32_NTLogEvent occurs the commands in the Sub will run. you can filter for types of events (application, system etc) and also the eventid so you can do different things
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2"
Set MySink = WScript.CreateObject("WbemScripting.SWbemSink","SINK_"
WMIservices.ExecNotificationQueryAsync Sink, "SELECT * FROM __InstanceDeletionEvent" & _
"WITHIN 10 WHERE TargetInstance ISA 'Win32_Process'"
WScript.Echo "Waiting for events..."
Sub SINK_OnObjectReady(objObject, objAsyncContext)
WScript.Echo (objObject.TargetInstance.Name)
End Sub