拦截每次鼠标点击WPF应用程序

时间:2012-11-05 13:03:56

标签: c# wpf

我希望拦截WPF应用程序中的每次鼠标点击。使用命令路由机制看起来应该很容易,但对不起,我找不到任何东西。

我的应用程序实现了多个安全级别,如果没有人在x分钟内与应用程序交互(点击),则需要自动恢复到最严格的级别。我的计划是添加一个在x分钟后过期的计时器并调整安全级别。每次鼠标点击进入应用程序都会重置计时器。

3 个答案:

答案 0 :(得分:17)

您可以注册一个类处理程序:

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!!");
        }
    }

这将处理在应用程序中创建的任何Window上的任何PreviewMouseDown事件。

答案 1 :(得分:1)

<Window .... PreviewMouseDown="Window_PreviewMouseDown_1">
</Window>

这应该适合你。

即使其他MouseDown事件触发其包含的组件,也会触发此事件。

根据Clemens在评论中的建议,PreviewMouseDown是比MouseDown更好的选择,因为这可以确保您无法阻止事件在不同的事件中发生。

答案 2 :(得分:0)

您有几个选择:

低级鼠标钩: http://filipandersson.multiply.com/journal/item/7?&show_interstitial=1&u=%2Fjournal%2Fitem

WPF解决方案(我会检查这是否符合您的要求): WPF. Catch last window click anywhere