¿Qué utiliza WPF para capturar la entrada del mouse y el teclado?

I globalmente (en todo el sistema) filtra ciertos clics del mouse usandoSetWindowsHookEx yWH_MOUSE_LL. El problema es que no funciona para las aplicaciones WPF (todas las aplicaciones WPF detectan los clics del mouse, ya sea que le haya ordenado al sistema que ignore estos clics). Ya le pregunté a un pregunta similar aquí, pero supuse que WPF usaDirectInput en lugar de mensajes estándar de Windows para detectar la entrada. ¿Pero lo hace?

He podido encontrar un código que fue capaz deinject clics del mouse en aplicaciones WPF usandoSendMessage. Si eso es posible, entonces creo que de alguna manera significa que WPF no usaDirectInput para la entrada del mouse. Pero entonces, ¿por qué no es posible evitar que las aplicaciones WPF detecten clics del mouse conSetWindowsHookEx?

Aunque esta pregunta se trata principalmente de la entrada del mouse, también me gustaría saber cómo funciona para la entrada del teclado.

Ejempl

Creé rápidamente la siguiente solución para reproducir el comportamiento extraño de WPF. Consta de 3 proyectos:

HookTester
StartUp project, lanza automáticamente otros 2 proyectos, por lo que debería preocuparse principalmente por este. Instala el gancho del mouse cuando se inicia y lo desinstala cuando cierra el formulario.

WinFormsTest
Contiene un cuadro de texto con menú contextual predeterminado donde puede probar el botón derecho del mouse. Cuando el HookTester se está ejecutando, no debería poder invocar el menú contextual con el botón derecho del mouse.

WpfTest
Contiene también un cuadro de texto, con un menú contextual personalizado (aunque también podría usar el menú predeterminado), por lo que este es nuevamente el lugar para probar el botón derecho del mouse. No debería poder invocar el menú contextual (con el botón derecho del mouse) mientras HookTester se esté ejecutando, pero por alguna razón, el menú se mostrará de todos modos (¿Por qué ???).

ADVERTENCIA Cuando ejecute la solución, el proyecto HookTester se iniciará e instalará inmediatamente el gancho para rechazar cualquier clic con el botón derecho del mouse (en todo el sistema). Puede desinstalar fácilmente el gancho simplemente cerrando el formulario HookTester. Pruebe con precaución.

Descargar SO5036143.ZIP espejo , Espejo

Respuestas a la pregunta(2)

Su respuesta a la pregunta