0

過去に次の CodeProject 記事で提供されているコードを使用して成功しましたが、Vista/7 では部分的にしか機能しないようです (UAC のためだと思います)。現在のスレッドでは機能しますが、システム全体のアクティビティは検出されません。マニフェストに requireAdministrator を追加して、アンマネージド アセンブリとマネージド アセンブリの両方に署名しようとしましたが、役に立たないようです。

ウィンドウ メッセージを使用して C# でグローバル システム フックを実装する

私の主な目標は、SetWindowsHookEx を使用して HSHELL_WINDOWCREATED および HSHELL_WINDOWDESTROYED メッセージをアンマネージ アセンブリでキャッチし、リアルタイムで情報を使用できるように C# アプリケーションに通知することです。基本的に、システムでウィンドウが作成または破棄されるたびに知る必要があります。

また、Vista/7 で問題なく動作する純粋な C/C++ のサンプル アプリケーションも見つけましたが、C# の方が好きなので、アプリケーション全体を C/C++ で作成する必要はありません。

機能するシステム全体のフックの例

最初の CodeProject 記事のコードを修正して、Vista/7 でも動作するようにする方法を知っている人はいますか? または、C#でタイマーや同様のハックを作成せずにこれを行う方法の他の例はありますか?

ありがとう、マーク

4

2 に答える 2

1

私のプログラムを見てください: http://wpfklip.codeplex.com。プログラムがウィンドウの作成、アクティブ化などをキャッチできるように、システム全体のシェルフックを実装しました。そして、それはc#で書かれています

于 2009-10-20T19:24:30.107 に答える
-1

ただし、ここには重要なポイントがあります。

1) Lusid はシェルフックを探しています。Lusid がリンクした最初の記事で説明されている「DLL インジェクション」の理由により、これらは .NET では機能しません。

2) Trickster がキーボードフックを書きました。これらは C# で正常に動作します (特定のアプリケーションではなく、ウィンドウの一部からフックされ、.NET の挿入に対応できるため)。

a

于 2009-11-28T14:31:27.593 に答える