c#でユーザーがプログラムを実行または終了したときに通知を受ける方法はありますか? 特定のプログラムだけでなく、ユーザーが実行できるすべてのプログラムについて話しています。ユーザーが .exe ファイルを実行するたびに通知を受け取りたいです。
グーグルで検索してもキーワードが思い浮かびません。
任意の提案をいただければ幸いです!
c#でユーザーがプログラムを実行または終了したときに通知を受ける方法はありますか? 特定のプログラムだけでなく、ユーザーが実行できるすべてのプログラムについて話しています。ユーザーが .exe ファイルを実行するたびに通知を受け取りたいです。
グーグルで検索してもキーワードが思い浮かびません。
任意の提案をいただければ幸いです!
私が知っている最も近いのは、フックを使用することです。
WH_SHELL フックを使用して、所有されていない新しいトップ レベル ウィンドウがシステムによって作成または破棄されるたびに、通知を受け取ることができます。これはプロセスと同じではありませんが、多くの場合はかなり似ており、他の場合にはより役立つ可能性があります (共有プロセスを使用している場合でも、新しい Word 文書ウィンドウが開かれた後に新しい Word 文書ウィンドウが表示されるため)。処理する)。
これを EnumProcess と組み合わせて、プロセス リストが変更されたかどうかを確認できる場合があります。これは、Windows アプリケーションの追跡には有効です (ただし、既存のコンソールで実行されているサービスやコンソール ベースのアプリケーションには当てはまりません)。
Microsoft .NET Framework 3.5 では、Process
es のリストを取得し、Process.Exitedイベントに登録できます。誰かが新しいプロセスを継続的に探すポーリング システムを実装できると思いますが、何かが開始されたときに実際には通知されません。
- 編集 -
この記事は役に立つかもしれません。カーネル モード ドライバーを作成する場合は、すべてのプロセスの開始と終了を制御できます。
本当にワイルドになりたい場合は、Microsoft Detours に接続できます。これについて興味深い記事があります。