Activa o Desactivar el Bloqueo de Mayúsculas

Con la función GetKeyboardState podemos saber el estado del Bloqueo de Mayúsculas y con SetKeyboardState podemos cambiar su estado.

Incluye el código en un módulo:

Option Explicit
Declare Function GetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As Long
Declare Function SetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As Long

Public Type KeyboardBytes 
    kbByte(0 To 255) as Byte 
End Type 

En el Evento Click de la ventana (Form) colocaremos el siguiente código y nos fijaremos en la actitud de la luz del Bloqueo de Mayúsculas…

Option Explicit
Private Sub Form_Click() 
    Dim kbArray as KeyboardBytes 

    GetKeyboardState kbArray 
    kbArray.kbByte(&H14) = IIF(kbArray.kbByte(&H14) = 1, 0, 1) 
    SetKeyboardState kbArray 
End Sub

Un ejemplo de como realizar un carrusel con las luces del teclado… 😉

Const VK_CAPITAL = &H14
Const VK_NUMLOCK = &H90
Const VK_SCROLL = &H91
Const VK_USED = VK_SCROLL
Private Type KeyboardBytes
     kbByte(0 To 255) As Byte
End Type
Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Long
Private Declare Function GetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As Long
Private Declare Function SetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Dim kbArray As KeyboardBytes, CapsLock As Boolean, kbOld As KeyboardBytes
Private Sub Form_Load()
    'Obtener el estado actual del teclado
    GetKeyboardState kbOld
    'Se oculta el formulario
    Me.Hide
    MsgBox "Mira atentamente la luces del teclado.", vbInformation, "Carrusel de Luces"
    TurnOff VK_CAPITAL
    TurnOff VK_NUMLOCK
    TurnOff VK_SCROLL
    Sleep 1000
    TurnOn VK_NUMLOCK
    Sleep 100
    TurnOn VK_CAPITAL
    Sleep 100
    TurnOn VK_SCROLL
    Sleep 300
    TurnOff VK_NUMLOCK
    Sleep 100
    TurnOff VK_CAPITAL
    Sleep 100
    TurnOff VK_SCROLL
    Sleep 500
    TurnOn VK_NUMLOCK
    TurnOn VK_SCROLL
    Sleep 200
    TurnOff VK_NUMLOCK
    TurnOff VK_SCROLL
    Sleep 200
    TurnOn VK_NUMLOCK
    TurnOn VK_SCROLL
    Sleep 200
    TurnOff VK_NUMLOCK
    TurnOff VK_SCROLL
    Sleep 200
    TurnOn VK_CAPITAL
    Sleep 200
    TurnOff VK_CAPITAL
    Sleep 200
    TurnOn VK_CAPITAL
    Sleep 200
    TurnOff VK_CAPITAL
    Sleep 200
    TurnOn VK_NUMLOCK
    TurnOn VK_SCROLL
    Sleep 200
    TurnOff VK_NUMLOCK
    TurnOff VK_SCROLL
    Sleep 200
    TurnOn VK_NUMLOCK
    TurnOn VK_SCROLL
    Sleep 200
    TurnOff VK_NUMLOCK
    TurnOff VK_SCROLL
    Sleep 200
    TurnOn VK_CAPITAL
    Sleep 400
    TurnOff VK_CAPITAL
    Sleep 200
    TurnOn VK_NUMLOCK
    Sleep 100
    TurnOn VK_CAPITAL
    Sleep 100
    TurnOn VK_SCROLL
    Sleep 300
    TurnOff VK_SCROLL
    Sleep 100
    TurnOff VK_CAPITAL
    Sleep 100
    TurnOff VK_NUMLOCK
    Sleep 1000
    Unload Me
End Sub
Private Sub TurnOn(vkKey As Long)
    'Asigna el estado del teclado
    GetKeyboardState kbArray
    'Cambia el estado de la tecla
    kbArray.kbByte(vkKey) = 1
    'Asigna el valor
    SetKeyboardState kbArray
End Sub
Private Sub TurnOff(vkKey As Long)
    'Recoge el estado del teclado
    GetKeyboardState kbArray
    'Cambia el estado
    kbArray.kbByte(vkKey) = 0
    'Asigna el valor
    SetKeyboardState kbArray
End Sub
Private Sub Form_Unload(Cancel As Integer)
    'Recupera el estado inicial del teclado
    SetKeyboardState kbOld
End Sub
Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s