私のアプリケーションは、システム上の他の実行中のアプリケーションをすべて監視する必要があります。すべてのアプリケーションexeの終了時に通知を受ける方法はありますか?私は見つけることができるWin32:他のアプリケーションの終了/終了の通知メッセージを取得
方法:
1)頻繁な間隔でEXEファイルを実行しているのリストを取得するにはPSAPI関数を使用します。各ポーリングで、前のリストと比較して、どのアプリケーション/プロセスが終了したかを調べます。 短所:一定のポーリングが必要で、CPU時間がかかります。
2)WM_CLOSEメッセージのグローバルフックを設定します。これを使用して、私は、任意のアプリケーションは、タイトルバーの[閉じる]ボタンを通じて
デメリット閉じますときに通知を取得することができるだろう: ( - )必ずしもすべてアプリケーションがWM_CLOSEメッセージを生成しています(例:Total Video Player Exe) 「終了」メニューまたはボタン(たとえば、ファイル→終了)でアプリケーションを終了した場合、そのメッセージをトラップできません。
私が逃した他の良い方法がありますか?お知らせ下さい。
WaitForSingleObjectsとWaitForMultipleObjectsの両方に対してERROR_ACCESS_DENIED(0x5)が表示されています。なぜこれが起きているのか、何が間違っているのですか? – armanali
私は推測することができます:あまりにも多くのアクセス権を求めているのでしょうか? SYNCHRONIZEで十分です。ユーザーコンテキストでこのプロセスを監視することができない場合があります(たとえば、シンプルユーザーはシステムプロセスにアクセスできません)。管理ユーザーでも管理者権限が必要です。 –
問題は実際にアクセス許可だったので、あなたは正しいSerge - appTranslatorです。私はPROCESS_ALL_ACCESSフラグを使用しました。 – armanali