2009-08-15 22 views
2

は、プログラムがC#でユーザによって実行または終了されたときに通知される方法ですか?私は、特定のプログラムだけでなく、ユーザーが実行できるすべてのプログラムについて話しています。ユーザーが.exeファイルを実行するたびに通知を受けたいと思います。C#でプログラムの実行と終了を通知するには?

私はGoogleにキーワードを考えることさえできません。

ご意見をお寄せください。

答えて

3

私が知っている最も近いことは、フックを使用することです。

WH_SHELL Hooksを使用すると、システムが所有していない新しいトップレベルウィンドウが作成または破棄されるたびに通知を受け取ることができます。これはプロセスと同じではありませんが、多くの場合はかなり近いですし、他のものではより有益な可能性があります(既に開いている新しいワードドキュメントウィンドウは、プロセス)。

EnumProcessと組み合わせて、プロセスリストが変更されているかどうかを確認することができます。これは、Windowsアプリケーション(ただし、既存のコンソールで実行されているサービスまたはコンソールベースのアプリケーションではない)を追跡するために機能します。

+0

実際、これはまさに私が探していたものです。ありがとうございました! – Moon

2

Microsoft .NET Framework 3.5では、のリストを取得し、Process.Exitedイベントに登録できます。私は誰かが新しいプロセスを探し続けているポーリングシステムを実装できると思いますが、何かが始まったときにあなたに通知するわけではありません。

- EDIT -

あなたはthis articleが役立つかもしれません。カーネルモードドライバを作成する場合は、すべてのプロセスの開始と終了を制御できます。

実際にが欲しい場合は、Microsoft Detoursに接続できます。それについてはinteresting articleです

+0

-1:プロセスの実行時に通知されることはあまり役に立ちません。 –

+0

編集があなたを怒らせないことを願っています。 :) –

+0

@Paul Williams:余分なリンクと情報ありがとう! – Moon

関連する問題