2010-12-16 8 views
6

Opracowałem klawiaturę ekranową w WPF. Potrzebuję przechwycić kluczową imprezę prasową (za pomocą klawiatury), aby zachować ścieżkę Caps Lock, Shift itd. (Bez względu na to, czy są wciśnięte). Należy pamiętać, że moja aplikacja traci ostrość, gdy zostanie otwarta jakakolwiek inna aplikacja (np. Notatnik).Przechwytywanie zdarzenia naciśnięcia klawisza w mojej aplikacji WPF, które nie mają ostrości

Czy ktoś mógłby zasugerować, jak to osiągnąć w WPF? Krótko mówiąc, moja aplikacja WPF musi przechwytywać kluczowe zdarzenia prasowe nawet , ale nie ma ostrości. Uprzejma pomoc.

+0

Musisz użyć interfejsu API systemu Windows, aby zarejestrować hak klawiatury w systemie Windows. https://blogs.msdn.microsoft.com/toub/2006/05/03/low-level-keyboard-hook-in-c/ –

Odpowiedz

3

Używam prostego kodu tyle:

w XAML używam KeyDown zdarzenie o nazwie 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" > 

To właśnie keyDown rutynowe wygląda jak gdzie sprawdzić numer 1:

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

Jest to prosty sposób, aby dostać się do dowolnego klawisza. Mam nadzieję, że to pomoże.

+1

Proste i działa świetnie! – Jerry

+7

To nie działa, gdy aplikacja nie jest skupiona. –

+6

nie działa, gdy aplikacja nie jest aktywowana, działa tylko w aplikacji fokusa. Błędna odpowiedź. –

Powiązane problemy