Autor Tema: Activar/desactivar teclado numérico  (Leído 2573 veces)

Desconectado xavi

  • Administrador
  • Habitual
  • *****
  • Mensajes: 212
Activar/desactivar teclado numérico
« en: Abril 13, 2012, 11:26:58 pm »
Palabras clave: API, activar, desactivar teclado numérico, NumLock
Autor: 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.

Cita de: SoftJaé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»:
Código: [Seleccionar]

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

Código: [Seleccionar]
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
« Última modificación: Diciembre 22, 2016, 09:26:46 pm por xavi »