¿Cómo bloquear la clave WIN en VB?
Primero ingresa el código en el formulario:
Private Sub Form_Load()
HooK
End Sub
Private Sub Form_Unload(Cancelar como entero)
UnHooK
End Sub
Crea otro módulo nuevo e ingresa el código:
' Módulo
Opción explícita
'Tipo de gancho:
'API para instalar ganchos
Función de declaración privada SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
'API de gancho suelto
Función de declaración privada CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal nCode As Long, ByVal wParam As Long, lParam As Any) As Long
'API para desinstalar ganchos
Función de declaración privada UnhookWindowsHookEx Lib " user32" (ByVal hHook As Long) As Long
'API se utiliza para copiar datos de memoria
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destino como cualquiera, Fuente como cualquier, ByVal Longitud siempre)
Tipo privado PKBDLLHOOKSTRUCT
vkCode siempre
scanCode siempre
banderas Mientras
tiempo Mientras
dwExtraInfo Mientras
Tipo de fin
Const privado WM_KEYDOWN = & >
Const privada WM_SYSKEYDOWN = &H104
Const privada WM_KEYUP = &H101
Const privada WM_SYSKEYUP = &H105
Constante privada VK_LWIN = &H5B
Private Const VK_RWIN = &H5C
'Agregue otras constantes aquí
'Otros ASCII para claves, consulte /view/15482.htm
'Puede use el sistema La calculadora científica incorporada convierte decimal ASCII a hexadecimal
Const privado HC_ACTION = 0
Const privado WH_KEYBOARD_LL = 13
LngHook privado siempre
'Ejecutar función de gancho
Pu
Función blic LowLevelKeyboardProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Dim blnHook As Boolean
Dim p As PKBDLLHOOKSTRUCT
Si nCode = HC_ACTION Entonces
Seleccione Caso wParam
Caso WM _KEYDOWN, WM_SYSKEYDOWN, WM_KEYUP, WM_SYSKEYUP
Llame a CopyMemory(p, ByVal lParam, Len(p) )
Si p.vkCode = VK_LWIN o p.vkCode = VK_RWIN Entonces se ha presionado la tecla Win izquierda/derecha
blnHook = True
Finalizar si
Caso más
Finalizar selección
Finalizar si
Si blnHook Entonces
LowLevelKeyboardProc = 1
Else
Llamar a CallNextHookEx(WH_KEYBOARD_LL, nCode, wParam, lParam)
Finalizar si
Finalizar función
Subhook público () 'Gancho de instalación de una tecla
lngHook = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf LowLevelKeyboardProc, App.hInstance, 0)
End Sub
Public Sub UnHook() 'Haga clic para desenganchar
Llamar a UnhookWindowsHookEx(lngHook)
End Sub