Ciao Alex
si confermo,le funzioni sono entrambe basate su GetKeyboardState ma IsCapsLockOn mi pare che abbia un problema, come puoi notare da questo esempio (che segue il tuo primo caso con intercettazione dei tasti):
Option Compare Database
Option Explicit
Private Sub Form_Load()
Me.KeyPreview = True
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Dim strMsg As String
If KeyCode = vbKeyCapital Then
strMsg = "in base a IsCapsLockOn - Il tasto Caps Lock è stato premuto su: "
If IsCapsLockOn() Then
strMsg = strMsg & "ON"
Else
strMsg = strMsg & "OFF"
End If
MsgBox strMsg
strMsg = "in base a Caps - Il tasto Caps Lock è stato premuto su: "
If Caps() Then
strMsg = strMsg & "ON"
Else
strMsg = strMsg & "OFF"
End If
MsgBox strMsg
End If
End Sub
in quanto restituisce sempre vero, ogni volta che è premuto il tasto Caps-Lock, per questo ho postato una soluzione similare (Caps) ma che analizza la situazione del Blocco delle Maiuscole.
Il problema veniva sollevato in alcuni forum internazionali ma non trovo più quelle specifiche discussioni, se non in termini più generici:
https://bytes.com/topic/access/answers/845955-caps-lock-num-lock-scroll-lock-status
http://www.excelbanter.com/showthread.php?t=30943