Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Cómo bloquear la clave WIN en VB?

¿Cómo bloquear la clave WIN en VB?

Esto se puede lograr utilizando ganchos para teclado. Este módulo no solo bloquea la clave WIN sino que también puede bloquear otras claves después de la modificación. El método de modificación se explica en los comentarios.

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