過去に次の CodeProject 記事で提供されているコードを使用して成功しましたが、Vista/7 では部分的にしか機能しないようです (UAC のためだと思います)。現在のスレッドでは機能しますが、システム全体のアクティビティは検出されません。マニフェストに requireAdministrator を追加して、アンマネージド アセンブリとマネージド アセンブリの両方に署名しようとしましたが、役に立たないようです。
ウィンドウ メッセージを使用して C# でグローバル システム フックを実装する
私の主な目標は、SetWindowsHookEx を使用して HSHELL_WINDOWCREATED および HSHELL_WINDOWDESTROYED メッセージをアンマネージ アセンブリでキャッチし、リアルタイムで情報を使用できるように C# アプリケーションに通知することです。基本的に、システムでウィンドウが作成または破棄されるたびに知る必要があります。
また、Vista/7 で問題なく動作する純粋な C/C++ のサンプル アプリケーションも見つけましたが、C# の方が好きなので、アプリケーション全体を C/C++ で作成する必要はありません。
最初の CodeProject 記事のコードを修正して、Vista/7 でも動作するようにする方法を知っている人はいますか? または、C#でタイマーや同様のハックを作成せずにこれを行う方法の他の例はありますか?
ありがとう、マーク