No tengo muy claro que
HotKeySet funcione diferenciando la mayúscula y la minúscula, pues en realidad son la misma tecla.
Pero si lo que quieres realmente es ver es si está activo el bloqueo de mayúsculas se hace de otra manera.
Hace falta usar una función de la DLL
user32.dll.
El siguiente código mira si se ha pulsado la mayúscula o minúscula según si está activo el
"Bloq Mayús".
Por cierto, "presionar" es con S, no con C
Código: Seleccionar todo
Global Const $VK_CAPITAL = 0x14 ; Keycode de CapsLock (bloqueo mayúsculas)
Global $UserDLL = DllOpen("user32.dll")
HotKeySet("a", "_Tecla_A")
HotKeySet("{ESC}", "_Salir")
While 1
Sleep(1000)
WEnd
Func _Tecla_A()
If _GetCapsLock() Then
ConsoleWrite("Presionada A mayúscula" & @CRLF)
Else
ConsoleWrite("Presionada A minúscula" & @CRLF)
EndIf
EndFunc
Func _GetCapsLock()
Local $ret
$ret = DllCall($UserDLL,"long","GetKeyState","long",$VK_CAPITAL)
Return $ret[0]
EndFunc
Func _Salir()
DllClose($UserDLL)
Exit
EndFunc
Otra cosa será además que se pueda estar presionando la tecla mayúsculas (no el bloqueo), para eso sí se puede hacer con HotKeySet mirando
HotKeySet("+a", "_Shift_A"), por ejemplo, y en esa función, si no está "Bloq Mayús" tienes la mayúscula, y si lo está la minúscula (pues al presionar mayús hace la inversa de lo que tengas en bloqueo mayúsculas)