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
|