WPF.抓住最后一个窗口点击任意位置

Car*_*rlo 6 wpf window click

无论如何,类可以捕获应用程序中的最后一次单击吗?就像是

public class MyClickManagerClass
{
    public MyClickManagerClass()
    {
        // subscribe to a global click event
    }

    private void GlobalClickEventHandler(object sender, EventArgs e)
    {
        // do something with the click here
    }
}
Run Code Online (Sandbox Code Playgroud)

谢谢你的时间!

Ray*_*rns 13

如果你只关心在给定的任何地方捕获鼠标点击Window,只需订阅MouseDownPreviewMouseDown在窗口级别就可以了.

如果你真的希望它是应用程序的全局(而不仅仅是窗口),你应该订阅InputManager.PreProcessInput或者InputManager.PostProcessInput事件并观察鼠标事件:

public MyClickManagerClass()
{
  InputManager.Current.PreProcessInput += (sender, e) =>
  {
    if(e.StagingItem.Input is MouseButtonEventArgs)
      GlobalClickEventHandler(sender,
        (MouseButtonEventArgs)e.StagingItem.Input);
  }
}
Run Code Online (Sandbox Code Playgroud)

请注意,"sender"将始终是InputManager,但您可以将坐标映射到其他控件MouseEventArgs.GetPosition(visual).