2013-09-25 66 views
0

在C#中,我需要尋找一個過程的觸發器,如"abc.exe"。每當這樣的過程開始時,我需要獲取第一個參數(總是等於標題名稱,說caption_name)。然後我需要用caption_name作爲參數觸發另一個進程"xyz.exe"在C中觀看事件#

我想要這個程序作爲後臺exe運行在系統中運行。因此我需要它佔用更少的內存空間。我怎樣才能做到這一點?

這是我如何開始的:

 ManagementEventWatcher watcher = new ManagementEventWatcher("Select * From __InstanceCreationEvent Within 5 Where TargetInstance Isa \"Win32_Process\" And TargetInstance.Name = \"hilite.exe\""); 
     watcher.EventArrived += watcher_EventArrived; 
+0

目前還不清楚你在這裏要求什麼。你能提供更多關於這個問題的細節嗎? –

+0

我需要監視名爲abc.exe的進程的啓動。 – user2799127

+0

啓動後,我將得到該進程的標題(標題欄文本),並將其傳遞給另一個控制檯應用程序xyz.exe – user2799127

回答

0

,因爲你需要從應用程序中啓動CMD進程,我建議你使它成爲一個應用程序,而不是服務。從服務中啓動應用程序處於「不可能的困難」的空間。

要枚舉當前的窗口,獲取進程ID(以使您能夠找到exe名稱)和標題),您必須使用pInvoke並調用一些Windows API函數。詳情請看How to enumerate all windows belonging to a particular process using .NET?。請特別查看接受答案中有關使用這些調用的一些代碼示例的鏈接。

最後,要啓動新進程,需要設置一個ProcessStartInfo實例,其路徑爲xyz.exe作爲FileName值,標題作爲Arguments值。將此傳遞給Process的一個實例並啓動後者。如果你想控制cmd winodw是否可見,訪問輸出等,你需要查看ProcessStartInfo和Process的其他屬性。

希望這有助於你。