Palabras clave:
API, activar, desactivar teclado numérico, NumLockAutor:
SoftJaén (Enrique Martínez)Extraído de:
La web del Búho
Pregunta: Hola, amigos del foro!
Sólo quisiera saber qué código vba en access necesito para activar y/o
desactivar la tecla "NUMLOCK" en tiempo de ejecución.
Tienes que recurrir a la API de Windows. Te dejo el siguiente código que
activará/desactivará la tecla del bloque numérico cada vez que llames al
procedimiento «SendNumLock»:
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, _
ByVal bScan As Byte, ByVal dwFlags As Long, _
ByVal dwExtraInfo As Long)
Public Sub SendNumLock()
'
' El procedimiento activará/desactivará la tecla
' del bloque numérico
'
Const KEYEVENTF_EXTENDEDKEY = &H1
Const KEYEVENTF_KEYUP = &H2
Const VK_NUMLOCK = &H90
keybd_event VK_NUMLOCK, vbKeyNumlock, KEYEVENTF_EXTENDEDKEY _
Or 0, 0
keybd_event VK_NUMLOCK, vbKeyNumlock, KEYEVENTF_EXTENDEDKEY _
Or KEYEVENTF_KEYUP, 0
End Sub
Addenda...
A raíz de una consulta de un cliente he necesitado una una función que activara SI o SI el teclado numérico. Esto es lo que ha salido
Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Private Const VK_NUMLOCK As Long = &H90
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Function ActivaNumerico()
Const KEYEVENTF_EXTENDEDKEY = &H1
Const KEYEVENTF_KEYUP = &H2
Const VK_NUMLOCK = &H90
If (GetKeyState(VK_NUMLOCK) And &HF) = 0 Then
keybd_event VK_NUMLOCK, vbKeyNumlock, KEYEVENTF_EXTENDEDKEY Or 0, 0
keybd_event VK_NUMLOCK, vbKeyNumlock, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0
End If
End Function