Změna NUM, CAPS, INS kláves

Postup:
Založte nový projekt, v něm modul a formulář. Ve formuláři nadefinujte statusbar tak, aby první panel zobrazoval stav klávesy NUM LOCK.

V modulu deklarujte následující kód:
Public Type KeyboardBytes
    kbByte(0 To 255) As Byte
End Type


Public kbArray As KeyboardBytes

Public Const VK_NUMLOCK = &H90

Public Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Long
Public Declare Function GetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As Long
Public Declare Function SetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As Long

* každá deklarace musí být celá na samostatném řádku

Ve formuláři, na událost PanelClick prvku Statusbar zapište následující kód:
Private Sub StatusBar_PanelClick(ByVal Panel As ComctlLib.Panel)

    Select Case Panel.Index
        Case 1
  
'První panel v poli
            GetKeyboardState kbArray
            kbArray.kbByte(VK_NUMLOCK) = IIf(kbArray.kbByte(VK_NUMLOCK) = 1, 0, 1)
            SetKeyboardState kbArray
            StatusBar.Refresh

    End Select

End Sub

Nyní spusťte aplikaci a klikáním na panel 1 ve statusbaru se bude přepínat klávesa NUM LOCK a bude se to projevovat i ve statusbaru. Pro úplnost uvádím další konstanty, které lze použít pro změnu stavu klávesy:
Public Const VK_CAPITAL = &H14    'CAPS LOCK
Public Const VK_INSERT = &H2D   
'INSERT
Public Const VK_SCROLL = &H91  
'SCROLL LOCK

Zpět

Autor: The Bozena