2009-08-15 114 views
2

有沒有辦法通知當一個程序在用戶在c#中執行或終止?我正在談論用戶可以執行的所有程序,而不僅僅是某個程序。我希望在用戶執行.exe文件時收到通知。如何在c#中通知程序執行和終止?

我什至不能想到一個關鍵字谷歌。

任何建議,將不勝感激!

回答

3

我知道的最接近的東西就是使用鉤子。

您可以使用WH_SHELL Hooks在系統創建或銷燬新的,非擁有的頂級窗口時收到通知。這與過程不同,但在很多情況下它非常接近,並且在其他情況下可能更有用(因爲它會在打開一個新的Word文檔窗口後顯示,即使它們正在使用共享處理)。

您可能可以將它與EnumProcess結合來檢查進程列表是否已更改。這將用於跟蹤Windows應用程序(但不包括在現有控制檯中運行的服務或基於控制檯的應用程序)。

+0

其實,這正是我所期待的。謝謝! – Moon 2009-08-15 00:51:59

2

在Microsoft .NET Framework 3.5中,您可以獲取Process es列表並註冊Process.Exited事件。我想有人可以實現一個輪詢系統,在這個系統中他們不斷地尋找新的進程,但是當啓動時沒有真正通知你。

- 編輯 -

您可能會發現this article有用。如果您願意編寫內核模式驅動程序,則可以控制每個進程的開始和結束。

現在,如果你真的想要瘋狂,你可以掛鉤到Microsoft Detours。這是關於這個的interesting article

+0

-1:這對執行進程時沒有任何通知。 – 2009-08-15 01:37:01

+0

希望編輯不會冒犯你多少。 :) – 2009-08-15 03:30:52

+0

@Paul Williams:感謝您的額外鏈接和信息! – Moon 2009-08-15 03:37:04