use Win32::OLE qw(EVENTS); use Win32::Console; my $console = Win32::Console->new(STD_INPUT_HANDLE); my $refWMI = Win32::OLE->GetObject('winMgmts:'); my $refSink = Win32::OLE->new ('WBemScripting.SWbemSink'); Win32::OLE->WithEvents($refSink,\&eventCallback); my $strQuery = "SELECT * FROM __InstanceCreationEvent " . "WITHIN .1 WHERE TargetInstance ISA '\Win32_Process\' AND Name = 'iexplore.exe'"; $refWMI->ExecNotificationQueryAsync($refSink, $StrQuery); Win32::OLE->MessageLoop(); $count = 1; sub eventCallback() { my ($Obj,$Event,@Args) = @_; print "First Event # $count triggered: $Event\n"; $count++; }