2010-01-20 11 views
6

¿Hay alguna forma en que una clase pueda capturar el último clic en la aplicación? Algo así comoWPF. Captura la última ventana, haz clic en cualquier lugar

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

    private void GlobalClickEventHandler(object sender, EventArgs e) 
    { 
     // do something with the click here 
    } 
} 

¡Gracias por su tiempo!

Respuesta

12

Si solo desea capturar clics del mouse en cualquier lugar en un Window, simplemente suscribiéndose al MouseDown o PreviewMouseDown en el nivel de la ventana es suficiente.

Si realmente quiere que sea global para la aplicación (y no sólo a la ventana), usted debe suscribirse al evento InputManager.PreProcessInput o InputManager.PostProcessInput y esté pendiente de los eventos del ratón:

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

Tenga en cuenta que "emisor "siempre será el Administrador de entrada, pero puede asignar coordenadas a otros controles con MouseEventArgs.GetPosition(visual).

+0

¡Funciona muy bien! ¡Gracias! Solo una nota, es: InputManager.Current.PreProcessInput – Carlo

+0

Gracias. Arreglé el código en mi respuesta. –

Cuestiones relacionadas