Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0181: Caps-, Num- und Scrollock Tasten kontrollieren

 von 

Beschreibung 

Wer den Zustand der Sondertasten Capslock, Numlock und Scrollock erfahren und kontrollieren möchte, ist hiermit bestens bedient. Der Zustand der Tastatur wird in ein Bytearray eingelesen und kann auf diese Art auch wieder zurückgeschrieben werden. Somit ist es möglich den Zustand mehrer Tasten gleichzeitig zu ändern.Diese Geschichte funktioniert nicht unter NT, dort ist die API-Funktion 'KeyBoardEvent' zu verwenden.

Schwierigkeitsgrad:

Schwierigkeitsgrad 1

Verwendete API-Aufrufe:

GetKeyboardState, SetKeyboardState

Download:

Download des Beispielprojektes [2,33 KB]

'Dieser Quellcode stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'------------- Anfang Projektdatei Project1.vbp -------------
'--------- Anfang Formular "Form1" alias Form1.frm  ---------
' Steuerelement: Kontrollkästchen-Steuerelement "Check1"
' Steuerelement: Timersteuerelement "Timer1"
' Steuerelement: Schaltfläche "Command1" (Index von 0 bis 2)
' Steuerelement: Beschriftungsfeld "Label1" (Index von 0 bis 2)

Option Explicit

Private Declare Function GetKeyboardState Lib "user32" _
        (pbKeyState As Byte) As Long

Private Declare Function SetKeyboardState Lib "user32" _
        (lppbKeyState As Byte) As Long

Const VK_NUMLOCK = &H90
Const VK_SCROLL = &H91
Const VK_CAPITAL = &H14

Private Sub Form_Load()
  Timer1.Enabled = False
  Timer1.Interval = 50
  Call Toggle(7)
  Call Toggle(7)
End Sub

Private Sub Command1_Click(Index As Integer)
  Call Toggle(2 ^ Index)
End Sub

Private Sub Check1_Click()
  If Check1.Value = vbChecked Then
    Timer1.Enabled = True
  Else
    Timer1.Enabled = False
  End If
End Sub

Private Sub Timer1_Timer()
  Call Toggle(Rnd * 8)
End Sub

Private Sub Toggle(Key As Integer)
  If Key And 1 Then
    If ToggleKey(VK_NUMLOCK) Then
      Label1(0).BackColor = &H80FF80
    Else
      Label1(0).BackColor = &H4000&
    End If
  End If
  
  If Key And 2 Then
    If ToggleKey(VK_CAPITAL) Then
      Label1(1).BackColor = &H80FF80
    Else
      Label1(1).BackColor = &H4000&
    End If
  End If
  
    If Key And 4 Then
    If ToggleKey(VK_SCROLL) Then
      Label1(2).BackColor = &H80FF80
    Else
      Label1(2).BackColor = &H4000&
    End If
  End If
End Sub

Private Function ToggleKey(Key As Byte) As Boolean
  Dim State As Boolean
  Dim Keys(0 To 255) As Byte
  
    Call GetKeyboardState(Keys(0))
    State = Keys(Key)
  
    If State <> True Then
      Keys(Key) = 1
    Else
      Keys(Key) = 0
    End If
    Call SetKeyboardState(Keys(0))
    ToggleKey = Not State
End Function
'---------- Ende Formular "Form1" alias Form1.frm  ----------
'-------------- Ende Projektdatei Project1.vbp --------------

Tipp-Kompatibilität:

Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.

Archivierte Nutzerkommentare 

Klicken Sie diesen Text an, wenn Sie die 7 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.

Kommentar von Alex am 02.02.2007 um 17:35

@ Von Philipp.Fister am 06.06.2005 um 23:01

Kannste mir das vll mal geben? :)

Kommentar von Kriechi am 04.03.2006 um 20:35

http://support.microsoft.com/?kbid=177674#XSLTH3126121122120121120120

alles schon beschreiben mit beispiel!

bitte den tipp ändern!

mfg

Kommentar von Philipp.Fister am 06.06.2005 um 23:01

Ich habe das Prgramm mal total neu überarbeitet habe jetzt ein Version die unter XP funkt. Sollten die Betreiber dieser Website interesse daran haben vielleicht sogar als tip einzustellen dann bitte an mich ne mail. Und ich würde es euch geben.

Gruß Philipp

Kommentar von Bronz am 17.01.2003 um 15:13

Musst die Zahlen mit AND verknüpfen, glaub ich...

Kommentar von tolki am 22.11.2002 um 11:38

der code ist ja wirklich mal ein beispiel für unübersichtlichkeit! die gleichen aufrufe in nem anderen code funzen dann übrigens!

Kommentar von The_Gumbler am 18.09.2001 um 20:09

anscheinend weiß das niemand... :(((

Kommentar von The_Gumbler am 15.09.2001 um 12:01

ich hätte mal eine frage: wie kann ich alle tasten (capslock, scrolllock und numlock) gleichzeitig aus bzw einschalten