11

WPFアプリケーションでマウスをクリックするたびにインターセプトすることを検討しています。これはコマンドルーティングメカニズムで簡単なはずですが、申し訳ありませんが何も見つかりません。

私のアプリケーションはいくつかのセキュリティレベルを実装しており、x分以内に誰もアプリケーションを操作(クリック)しない場合、最も制限の厳しいレベルに自動的に戻る必要があります。私の計画は、x分後に期限切れになり、セキュリティレベルを調整するタイマーを追加することです。アプリケーションをマウスでクリックするたびに、タイマーがリセットされます。

4

3 に答える 3

24

クラスハンドラーを登録できます。

public partial class App : Application
    {
        protected override void OnStartup(StartupEventArgs e)
        {
            EventManager.RegisterClassHandler(typeof(Window), Window.PreviewMouseDownEvent, new MouseButtonEventHandler(OnPreviewMouseDown));

            base.OnStartup(e);
        }

        static void OnPreviewMouseDown(object sender, MouseButtonEventArgs e)
        {
            Trace.WriteLine("Clicked!!");
        }
    }

これはPreviewMouseDown、アプリケーションで作成されたウィンドウ上のすべてのイベントを処理します。

于 2012-11-05T13:23:25.543 に答える
3
<Window .... PreviewMouseDown="Window_PreviewMouseDown_1">
</Window>

これはあなたのために働くはずです。

これはMouseDown、含まれているコンポーネントに対して他のイベントが発生した場合でも発生します。

コメントのクレメンスの提案によると、別のイベントでイベントのバブリングが発生するのを防ぐことができないので、PreviewMouseDownよりも良い選択です。MouseDown

于 2012-11-05T13:07:12.460 に答える
0

いくつかのオプションがあります。

低レベルのマウスフック: http://filipandersson.multiply.com/journal/item/7?&show_interstitial = 1& u =%2Fjournal%2Fitem

WPFソリューション(これが最初に必要なことを実行するかどうかを確認します): WPF。最後のウィンドウをクリックしてどこでもキャッチ

于 2012-11-05T13:07:08.357 に答える