2010-12-16 25 views
6

He desarrollado un teclado en pantalla en WPF. Necesito capturar la clave evento de prensa (a través del teclado) para mantener un registro de Bloq Mayús, Shift , etc. (ya sea que estén presionados). Tenga en cuenta que mi aplicación pierde el foco cuando se abre cualquier otra aplicación (por ejemplo, el bloc de notas).Captura de evento de pulsación de tecla en mi aplicación WPF que no tiene foco

¿Alguien podría sugerir cómo lograr esto en WPF? en resumen, mi aplicación WPF necesita capturar los eventos de pulsación de tecla incluso aunque no tiene foco. Amablemente ayuda.

+0

Tienes que usar la API de Windows para registrar un gancho de teclado con Windows. https://blogs.msdn.microsoft.com/toub/2006/05/03/low-level-keyboard-hook-in-c/ –

Respuesta

3

Yo uso un simple código detrás:

En el xaml utilizo un evento KeyDown llamada MyTestKey.

<Window x:Class="MyApp.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     KeyDown="myTestKey" > 

Esto es lo que las miradas de rutina keydown como dónde puedo comprobar el número 1:

private void myTestKey(object sender, KeyEventArgs e) 
{ 
      if ((e.Key == Key.D1) || (e.Key == Key.NumPad1)) 
      { 
       //do some stuff here 
       return; 
      } 
} 

Esta es una manera fácil de llegar a cualquier tecla. Espero que esto ayude.

+1

¡Simple y funciona genial! – Jerry

+7

Esto no funciona cuando la aplicación no está enfocada –

+6

no funciona cuando la aplicación no está enfocada, funciona solo para la aplicación de enfoque. la respuesta incorrecta. –

Cuestiones relacionadas