2011-07-09 95 views
0

如果我使用絕對默認安裝的WMI asynchronic查詢:問題WMI asynchronic呼叫

mgtEvWatcher = new ManagementEventWatcher("SELECT * FROM __InstanceOperationEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_Process'"); 
mgtEvWatcher.EventArrived += new EventArrivedEventHandler(mgtEvWatcher_EventArrived); 

這是足以讓一個WMI asynchronic查詢回事?我想捕捉過程創建的事件。 沒有錯誤,沒有例外,但每當我打開一個應用程序(嘗試使用cmd-> calc以及一些我不記得的),沒有任何反應

回答

0

你打電話給ManagementEventWatcher.Start方法嗎?訂閱事件

另外,如果您想要監視進程的創建,則必須改用__InstanceCreationEvent wmi類。

試試這個代碼

mgtEvWatcher = new ManagementEventWatcher("SELECT * FROM __InstanceCreationEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_Process'"); 
mgtEvWatcher.EventArrived += new EventArrivedEventHandler(mgtEvWatcher_EventArrived); 
mgtEvWatcher.Start(); 
+0

工作!事件不停地開火,但我怎麼能讓它停止射擊?非常感謝!!! :D –

+0

只需調用Stop方法,http://msdn.microsoft.com/en-us/library/system.management.managementeventwatcher.stop.aspx – RRUZ

+0

再次感謝!我嘗試了Stop方法,它部分工作,我必須在事件到達後設置超時。只要寫這個以防有人遇到同樣的問題。 –