Red de conocimiento informático - Problemas con los teléfonos móviles - Cómo deshabilitar las teclas win, alt y tab en el protector de pantalla VB

Cómo deshabilitar las teclas win, alt y tab en el protector de pantalla VB

Código VB para deshabilitar las teclas tab+alt y win

Este ejemplo demuestra cómo deshabilitar alt+esc, alt+tab, alt+esc. El sistema requiere Windows NT 4.0 SP3 y superior. Para utilizar el operador AddressOf, utilice VB5 o VB6.

Private Const WH_KEYBOARD_LL = 13& 'Habilita que el teclado se publique en la cola de entrada del hilo

'Monitoreo de eventos de entrada

'

Private Const HC_ACTION = 0& 'parámetros wParam y lParam

'Contiene información sobre

'mensajes del teclado

Private Const LLKHF_EXTENDED = &H1&Probar indicador de clave extendida

Const privada LLKHF_INJECTED = &H10& 'Indicador de inyección de evento de prueba

Const privada LLKHF_ALTDOWN = &H20& 'Código de contexto de prueba

Const privada LLKHF_UP = &H80& 'Estado de transición de prueba flags

Const privada VK_TAB = &H9 'Constante de clave virtual

Const privada VK_CONTROL = &H11

Const privada VK_ESCAPE = & Tipo privado KBDLLHOOKSTRUCT

vkCode As Long 'Código de clave virtual que va de 1 a 254

scanCode As Long 'Código de escaneo de hardware de la clave

banderas As Long ' Especifique indicadores de clave extendidos,

'Indicadores de inyección de eventos, códigos de contexto,

' y indicadores de estado de transición

time As Long 'This La marca de tiempo del mensaje

dwExtraInfo As Long 'Información adicional relacionada con el mensaje

Tipo de finalización

Función de declaración privada SetWindowsHookEx Lib "user32" _

Alias ​​​​"SetWindowsHookExA" _

(ByVal idHook Mientras, _

ByVal lpfn Mientras, _

ByVal hmod Mientras, _

p >

ByVal dwThreadId As Long) As Long

Función de declaración privada UnhookWindowsHookEx Lib "user32" _

(ByVal hHook As Long) As Long

Privado Declarar función CallNextHookEx Lib "user32 " _

(ByVal hHook As Long, _

ByVal nCode As Long, _

ByVal wParam As Long, _ < / p>

ByVal lParam As Long) As Long

Private Declare Sub CopyMemory Lib "kernel32" _

Alias ​​"RtlMoveMemory" _

( pDest como cualquiera, _

pSource como cualquiera, _

ByVal cb como

Long)

Función de declaración privada GetAsyncKeyState Lib "user32" _

(ByVal vKey As Long) como entero

Privada m_hDllKbdHook As Long 'Hold

'Procedimiento de variable privada del identificador de gancho

Public Sub Main()

'Establece y obtiene el identificador del identificador de teclado

m_hDllKbdHook As Long As Integer

Privado m_hDllKbdHook siempre que 'Privado hDllKbdHook = SetWindowsHookEx(WH_KEYBOARD_LL, _

AddressOf LowLevelKeyboardProc, _

App.hInstance, _

0&)

Si m_ hDllKbdHook <> 0 Entonces

'¡Está enganchado! Mostrar cuadro de mensaje

'Para suspender temporalmente la aplicación aquí

' (LowLevelKeyboardProc continuará

'procesando el mensaje), y

'Se muestra después del cuadro de mensaje

'Descolgar llamada. Consulte arriba para obtener información específica de

.

'Información específica.

MsgBox "Ctrl+Esc, Alt+Tab y Alt+Esc están bloqueados." & _

"Haga clic en Aceptar para salir y volver a habilitar las pulsaciones de teclas.", _

'Haga clic en Aceptar para salir y volver a habilitar las claves.

vbOKOnly O vbInformation, _

"Keyboard Hook Active"

' Colocado solo en esta demostración.

'Cuando se usa en una aplicación, pasa al evento de descarga del formulario principal.

Llame a UnhookWindowsHookEx(m_hDllKbdHook)

De lo contrario

MsgBox "Error al instalar el enlace de teclado de bajo nivel - " & Err.

Fin If

End Sub

Función pública LowLevelKeyboardProc(ByVal nCode As Long, _

ByVal wParam As Long, _

ByVal lParam As Long) As Long

'Función de devolución de llamada definida por la aplicación

'Se utiliza con la función SetWindowsHookEx.

'El sistema llamará a esta función cada vez que un nuevo evento de entrada de teclado esté a punto de publicarse en la cola de entrada del hilo.

'El sistema llamará a esta función cada vez que un nuevo evento de entrada de teclado esté a punto de publicarse en la cola de entrada del hilo.

"La entrada del teclado puede provenir de un controlador de teclado local o de una llamada a la función

"keybd_event". Si la entrada del teclado proviene de una llamada a la función keybd_event, entonces

'

La entrada al controlador del teclado puede provenir de una llamada a la función keybd_event

'Si la entrada proviene de una llamada a la función keybd_event, la entrada

'es" inyección".

kbdllhs estático como KBDLLHOOKSTRUCT

'Si nCode es menor que cero, el gancho

'El procedimiento debe devolver el valor devuelto por CallNextHookEx.

'

'Si nCode es mayor o igual a cero,

' y el proceso de enlace no maneja el

' mensaje, se recomienda encarecidamente que

'Llame a CallNextHookEx y devuelva su

'valor devuelto; de lo contrario,

'Otras aplicaciones que tengan instalado el gancho WH_KEYBOARD_LL; no podrá

'Se recibe la notificación de gancho y pueden ocurrir errores

'Behavior.

'

'Si el proceso de enlace maneja el mensaje,

'puede devolver un valor distinto de cero para evitar

' El sistema pasa el mensaje al resto de la cadena de gancho o al procedimiento de ventana de destino.

Si nCode = HC_ACTION Entonces

'nCode especifica el gancho

'El procedimiento almacenado utiliza HC_ACTION como el único código válido.

'Cuando se recibe un código HC_ACTION,

'wParam y lParam contienen información

'que no es el código utilizado por el gancho para procesar el mensaje.

'lParam contiene información sobre los mensajes del teclado

'lParam contiene un puntero a una estructura KBDLLHOOKSTRUCT.

'Llamar a CopyMemory(kbDLLHOOKSTRUCT).Llamar a CopyMemory(kbdllhs, ByVal lParam, Len(kbdllhs))

'Ctrl+Esc ------------ - --

Si (kbdllhs.vkCode = VK_ESCAPE) Y _

CBool( GetAsyncKeyState(VK_CONTROL) _

Y &H8000) Entonces

Debug.Print "Ctrl+Esc bloqueado"

LowLevelKeyboardProc = 1

Salir de la función

Fin si 'kbdllhs.vkCode = VK_ESCAPE

'Alt+Tab --------------

Si (kbdllhs.vkCode = VK_TAB) y_

CBool(kbdllhs.flags Y _

LLKHF_ALTDOWN) Luego

Debug.Print "Alt+Tab bloqueado"

LowLevelKeyboardProc = 1

Salir de la función

Finalizar si ' kbdllhs.vkCode = VK_TAB

'Alt+Esc --------------

Si (kbdllhs.vkCode = VK_ESCAPE) Y _

CBool(kbdllhs.flags y _

LLKHF_ALTDOWN) Luego

Debug.Print "Alt+Esc bloqueado"

LowLevelKeyboardProc = 1

Salir de la función

Fin si 'kbdllhs.vkCode = VK _ESCAPE

Fin si 'nCode = HC_ACTION

LowLevelKeyboardProc = CallNextHookEx (m_hDllKbdHook, _

nCode, _

wParam, _

lParam)

Función final

i ¡No lo he probado, lo encontré en línea!

¡No lo probé, lo encontré online!