From: Masaki Suketa Date: 2012-12-15T15:03:36+09:00 Subject: Re: Howto win32ole wmi sink object Hello, On Wed, Dec 12, 2012 at 05:45:28AM +0900, Murmansk Manny wrote: > objWMIService = WIN32OLE.connect('winmgmts:\\\\.\\root\\CIMV2') > mySink = WIN32OLE.new("WbemScripting.SWbemSink","HOOKMETHOD_") > SQL = "SELECT * FROM __InstanceCreationEvent WITHIN 1 WHERE > TargetInstance ISA 'Win32_Process'" > objWMIservice.ExecNotificationQueryAsync mySink, SQL > sleep 100 > > def HOOKMETHOD_OnObjectReady(objObject, objAsyncContext) > print "Creation of #{objObject.TargetInstance.Name}" > end > ------------- > > The error that it gives to me is: > > ------------- > sink.rb:5:in `initialize': failed to create DCOM server > `WbemScripting.SWbemSink' in `HOOKMETHOD_' (WIN32OLERuntimeError) > HRESULT error code:0x800706ba > RPC server not available. > from sink.rb:5:in `new' > from sink.rb:5:in `
' > ------------- > > Does anyone knows how to make this code works? Use WIN32OLE_EVENT. Try following script. ----- objWMIService = WIN32OLE.connect("winmgmts:\\\\.\\root\\CIMV2") SQL = "SELECT * FROM __InstanceCreationEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_Process'" mySink = WIN32OLE.new('WbemScripting.SWbemSink') ev = WIN32OLE_EVENT.new(mySink) ev.on_event("OnObjectReady"){|objObject, objAsyncContext| puts "Creation of " + objObject.TargetInstance.Name } objWMIService.ExecNotificationQueryAsync mySink, SQL while 1 WIN32OLE_EVENT.message_loop end ----- Best Regards, Masaki Suketa