Tipp 0438 Tastatureingaben systemweit abfragen
Autor/Einsender:
Datum:
  Frank Grimm
17.02.2005
Entwicklungsumgebung:   VB 6
Innerhalb von Formularen kann man mittels des KeyPress-Ereignisses und der KeyUp-/KeyDown-Ereignisse komfortabel auf Tastatureingaben des Benutzers reagieren. Wenn ein Fenster allerdings unsichtbar ist oder lediglich den Fokus verloren hat, werden diese Ereignisse nicht mehr ausgelöst. Um trotzdem auf Tastatureingaben reagieren zu können, zeigt dieser Tipp wie man mit einem Timer und der API-Funktion GetAsyncKeystate den Status einer Taste überprüfen kann. Durch die Übergabe des KeyCodes aus der KeyCodeConstants-Aufzählung lässt sich mit Hilfe dieser API-Funktion ermitteln, ob die Taste momentan gedrückt ist, seit der letzten Überprüfung gedrückt wurde oder nicht gedrückt wurde.
 
Option Explicit

Private Declare Function GetAsyncKeyState Lib "user32" ( _
      ByVal vKey As Long) As Integer

Private Declare Sub CopyMemory Lib "kernel32" Alias _
      "RtlMoveMemory" (lpDest As Any, lpSource As Any, _
      ByVal cBytes As Long)

Private Sub Form_Load()
  Dim i As Long
  For i = 0 To (chkFKey.Count - 1)
    chkFKey(i).Caption = chkFKey(i).Caption & CStr(i + 1)
  Next i
End Sub

Private Sub tmrCheckKeys_Timer()
  Dim i As Long
  Dim nRetVal As Long

  For i = KeyCodeConstants.vbKeyF1 To KeyCodeConstants.vbKeyF12
    nRetVal = GetAsyncKeyState(i)
    If (HiWord(nRetVal) <> 0) Or (LoWord(nRetVal) <> 0) Then
      chkFKey(i - 112).Value = 1
    Else
      chkFKey(i - 112).Value = 0
    End If
  Next i
End Sub

Private Function LoWord(ByVal dwValue As Long) As Integer
  Call CopyMemory(LoWord, dwValue, 2&)
End Function

Private Function HiWord(ByVal dwValue As Long) As Integer
  Call CopyMemory(HiWord, ByVal VarPtr(dwValue) + 2, 2&)
End Function
 
Weitere Links zum Thema
Tastatur-Einstellungen auslesen und setzen
Tastencodes senden

Windows-Version
95
98
ME
NT
2000
XP
Vista
Win 7
VB-Version
VBA 5
VBA 6
VB 4/16
VB 4/32
VB 5
VB 6


Download  (3,6 kB) Downloads bisher: [ 1923 ]

Vorheriger Tipp Zum Seitenanfang Nächster Tipp

Startseite | Projekte | Tutorials | API-Referenz | VB-/VBA-Tipps | Komponenten | Bücherecke | VB/VBA-Forum | VB.Net-Forum | DirectX-Forum | Foren-Archiv | DirectX | VB.Net-Tipps | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Donnerstag, 19. Mai 2011