Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Manual de como bloquear CTRL+ALT+SUP, ALT+TAB, Y OTROS con Visual Basic en Win XP

Estas en el tema de Manual de como bloquear CTRL+ALT+SUP, ALT+TAB, Y OTROS con Visual Basic en Win XP en el foro de Visual Basic clásico en Foros del Web. Muy bien, luego de buscar mucho por todos lados y quedarme muchas horas trabajando, logré bloquear todo en windows, por ahí decían que era imposible, ...
  #1 (permalink)  
Antiguo 01/10/2004, 23:44
 
Fecha de Ingreso: diciembre-2001
Ubicación: Morelia, México.
Mensajes: 312
Antigüedad: 22 años, 4 meses
Puntos: 0
Manual de como bloquear CTRL+ALT+SUP, ALT+TAB, Y OTROS con Visual Basic en Win XP

Muy bien, luego de buscar mucho por todos lados y quedarme muchas horas trabajando, logré bloquear todo en windows, por ahí decían que era imposible, otros que XP no lo permiete, pero aquí está, no se si será que quienes lo descubrieron no quisieron revelar el proceso, en todo caso creo que será muy útil.

CTRL+ALT+SUP (TaskManager)

Se debe ingresar la instrucción "DisableTaskMgr" directamente en el regedit con el valor "1" en la carpeta abajo indicada, esto es fácil hacerlo desde VB.

[HKEY_CURRENT_USER\Software\Microsoft\Windows\Curre ntVersion\Policies\System]

Value Name: DisableTaskMgr

Data Type: REG_DWORD (DWORD Value)

Value Data: (0 = default, 1 = bloquea Task Manager)

------------------------------------------------------------------

ALT+TAB, CTRL+ESC (Tecla Windows), ALT+F4

Crear el siguiente Módulo (.BAS), no importa como le llamen

Option Explicit

Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Public Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Public Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Public Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal nCode As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long

Public Const HC_ACTION = 0
Public Const WM_KEYDOWN = &H100
Public Const WM_KEYUP = &H101
Public Const WM_SYSKEYDOWN = &H104
Public Const WM_SYSKEYUP = &H105
Public Const WH_KEYBOARD_LL = 13

Public Type KBDLLHOOKSTRUCT
vkCode As Long
scanCode As Long
flags As Long
time As Long
dwExtraInfo As Long
End Type

Public Enum VirtualKey
VK_LBUTTON = &H1
VK_RBUTTON = &H2
VK_CTRLBREAK = &H3
VK_MBUTTON = &H4
VK_BACKSPACE = &H8
VK_TAB = &H9
VK_ENTER = &HD
VK_SHIFT = &H10
VK_CONTROL = &H11
VK_ALT = &H12
VK_PAUSE = &H13
VK_CAPSLOCK = &H14
VK_ESCAPE = &H1B
VK_SPACE = &H20
VK_PAGEUP = &H21
VK_PAGEDOWN = &H22
VK_END = &H23
VK_HOME = &H24
VK_LEFT = &H25
VK_UP = &H26
VK_RIGHT = &H27
VK_DOWN = &H28
VK_PRINTSCREEN = &H2C
VK_INSERT = &H2D
VK_DELETE = &H2E
VK_0 = &H30
VK_1 = &H31
VK_2 = &H32
VK_3 = &H33
VK_4 = &H34
VK_5 = &H35
VK_6 = &H36
VK_7 = &H37
VK_8 = &H38
VK_9 = &H39
VK_A = &H41
VK_B = &H42
VK_C = &H43
VK_D = &H44
VK_E = &H45
VK_F = &H46
VK_G = &H47
VK_H = &H48
VK_I = &H49
VK_J = &H4A
VK_K = &H4B
VK_L = &H4C
VK_M = &H4D
vk_n = &H4E
VK_O = &H4F
VK_P = &H50
VK_Q = &H51
VK_R = &H52
VK_S = &H53
VK_T = &H54
VK_U = &H55
VK_V = &H56
VK_W = &H57
VK_X = &H58
VK_Y = &H59
VK_Z = &H5A
VK_LWINDOWS = &H5B
VK_RWINDOWS = &H5C
VK_APPSPOPUP = &H5D
VK_NUMPAD_0 = &H60
VK_NUMPAD_1 = &H61
VK_NUMPAD_2 = &H62
VK_NUMPAD_3 = &H63
VK_NUMPAD_4 = &H64
VK_NUMPAD_5 = &H65
VK_NUMPAD_6 = &H66
VK_NUMPAD_7 = &H67
VK_NUMPAD_8 = &H68
VK_NUMPAD_9 = &H69
VK_NUMPAD_MULTIPLY = &H6A
VK_NUMPAD_ADD = &H6B
VK_NUMPAD_PLUS = &H6B
VK_NUMPAD_SUBTRACT = &H6D
VK_NUMPAD_MINUS = &H6D
VK_NUMPAD_MOINS = &H6D
VK_NUMPAD_DECIMAL = &H6E
VK_NUMPAD_POINT = &H6E
VK_NUMPAD_DIVIDE = &H6F
VK_F1 = &H70
VK_F2 = &H71
VK_F3 = &H72
VK_F4 = &H73
VK_F5 = &H74
VK_F6 = &H75
VK_F7 = &H76
VK_F8 = &H77
VK_F9 = &H78
VK_F10 = &H79
VK_F11 = &H7A
VK_F12 = &H7B
VK_NUMLOCK = &H90
VK_SCROLL = &H91
VK_LSHIFT = &HA0
VK_RSHIFT = &HA1
VK_LCONTROL = &HA2
VK_RCONTROL = &HA3
VK_LALT = &HA4
VK_RALT = &HA5
VK_POINTVIRGULE = &HBA
VK_ADD = &HBB
VK_PLUS = &HBB
VK_EQUAL = &HBB
VK_VIRGULE = &HBC
VK_SUBTRACT = &HBD
VK_MINUS = &HBD
VK_MOINS = &HBD
VK_UNDERLINE = &HBD
VK_POINT = &HBE
VK_SLASH = &HBF
VK_TILDE = &HC0
VK_LEFTBRACKET = &HDB
VK_BACKSLASH = &HDC
VK_RIGHTBRACKET = &HDD
VK_QUOTE = &HDE
VK_APOSTROPHE = &HDE
End Enum

Dim p As KBDLLHOOKSTRUCT

Public Function LowLevelKeyboardProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Dim fEatKeystroke As Boolean
If (nCode = HC_ACTION) Then
If wParam = WM_KEYDOWN Or wParam = WM_SYSKEYDOWN Or wParam = WM_KEYUP Or wParam = WM_SYSKEYUP Then
CopyMemory p, ByVal lParam, Len(p)
fEatKeystroke = _
(p.vkCode = VK_CAPSLOCK) Or _
(p.vkCode = VK_LWINDOWS) Or _
(p.vkCode = VK_RWINDOWS) Or _
(p.vkCode = VK_APPSPOPUP) Or _
((p.vkCode = VK_SPACE) And ((GetKeyState(VK_ALT) And &H8000) <> 0)) Or _
((p.vkCode = VK_TAB) And ((GetKeyState(VK_ALT) And &H8000) <> 0)) Or _
((p.vkCode = VK_ESCAPE) And ((GetKeyState(VK_CONTROL) And &H8000) <> 0))
End If
End If
If fEatKeystroke Then
LowLevelKeyboardProc = -1
Else
LowLevelKeyboardProc = CallNextHookEx(0, nCode, wParam, ByVal lParam)
End If
End Function


--------------------------------------------------------------
Es mucho texto, sugiero Copiar y Pegar.

Para bloquear en cualquier momento se debe escribir la sigueinte setencia:

hhkLowLevelKybd = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf LowLevelKeyboardProc, App.hInstance, 0)

Para desbloquear (ojo, esto es importantísimo, si no hay que resetear la máquina), se digita la siguiente sentencia:

UnhookWindowsHookEx hhkLowLevelKybd


Para bloquear y ocultar la barra de tareas (TaskBar)

En otro módulo (.BAS) digitar:

Global Const SW_HIDE = 0
Global Const SW_SHOWNORMAL = 1
Global Const SW_SHOW = 5

Public Declare Function FindWindowHandle Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function ShowWindow Lib "user32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long


Para que se ejecute las funciones escribir las siguientes sentencias:

Dim hWnd As Long
Dim Res As Long
hWnd = FindWindowHandle("shell_traywnd", Chr(0))
Res = ShowWindow(hWnd, SW_HIDE)


Y para desbloquear y mostrar de nuevo:

hWnd = FindWindowHandle("shell_traywnd", Chr(0))
Res = ShowWindow(hWnd, SW_SHOW)


---------------------------------------------------------------

Por último para minimizar todas las ventanas incluso si están en modo gráfico como juegos,

En un módulo (.BAS) digitar lo siguiente:

Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, _
ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

Public Const VK_LWIN = &H5B
Public Const KEYEVENTF_KEYUP = &H2


Para que se ejecute el proceso dar las siguientes instrucciones:

Call keybd_event(VK_LWIN, 0, 0, 0)
Call keybd_event(&H4D, 0, 0, 0)
Call keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0)


---------------------------------------------------------------


Listo, es todo, espero que con esto puedan trabajar todos los que han querido saber como bloquear todas esas cosillas en Windows XP, y ojo, si funciona con XP, yo monté un programa donde uso todos esos comandos y corre perfectamente en XP, no lo he probado en otros windows, pero lo que es W9x/Me es mucho más simple para bloquear y en W2000 puede que trabaje parecido al XP al menos la versión profesional, y en los Windows Server dudo que funcione.

Nos vemos!!! Pura vida!!!
  #2 (permalink)  
Antiguo 02/10/2004, 07:12
Avatar de Funk  
Fecha de Ingreso: septiembre-2003
Ubicación: BA - Argentina
Mensajes: 102
Antigüedad: 20 años, 8 meses
Puntos: 0
Hola, como estás, te quería hacer una consulta, ya que hace rato que busco y no puedo encontrar la solución, yo necesito para un trabajo que me pidieron bloquear la tecla CTRL cuando ingresas a una pagina web especifica.
Mejor dicho, al ingresar al sitio de este cliente el quiere que no se pueda usar la tecla CTRL para imprimir, o copiar.

Tenes idea de algun script que pueda hacer esto.

Muchas gracias po tu tiempo.
__________________
Walter Bove
Diseñador Multimedial
Arteuz Comunicación Multimedial
Funk Blog Job
  #3 (permalink)  
Antiguo 02/10/2004, 15:56
 
Fecha de Ingreso: diciembre-2001
Ubicación: Morelia, México.
Mensajes: 312
Antigüedad: 22 años, 4 meses
Puntos: 0
Disculpen.. faltó algo, crear una variable pública, ya sabrán donde va, es para el bloqueo del CTRL+ESC y ALT+TAB, etc.

Public hhkLowLevelKybd As Long

Nos vemos!!
  #4 (permalink)  
Antiguo 02/10/2004, 17:31
 
Fecha de Ingreso: marzo-2002
Ubicación: Mar del Plata
Mensajes: 145
Antigüedad: 22 años, 2 meses
Puntos: 0
hola, sólo sirve para WinXP???
  #5 (permalink)  
Antiguo 02/10/2004, 18:43
 
Fecha de Ingreso: diciembre-2001
Ubicación: Morelia, México.
Mensajes: 312
Antigüedad: 22 años, 4 meses
Puntos: 0
Es cuestión de probarlo.. lo que pasa es que recurre a distintos APIs que no sé si estén disponible en otras versiones de windows. En todo caso, para windows 9x/Me hay muchos códigos disponibles por todo lado para bloqueos.
  #6 (permalink)  
Antiguo 11/10/2004, 21:46
 
Fecha de Ingreso: diciembre-2001
Ubicación: Morelia, México.
Mensajes: 312
Antigüedad: 22 años, 4 meses
Puntos: 0
Les ha servido el manual?
  #7 (permalink)  
Antiguo 24/11/2004, 23:28
 
Fecha de Ingreso: mayo-2004
Ubicación: En mi casa
Mensajes: 54
Antigüedad: 20 años
Puntos: 0
si pero

Si muchas gracias, oye no sabes como hacer para que el proceso no se vea en el administrador de procesos en la pestaña procesos, o sea no bloquear el ctrl + alt + supr sino que no se vea el proceso.
__________________
Quiero que ciencia y tecnología avancen muy rápido, por eso comparto lo que se, podría servir a alguién q esté creando algo genial.
  #8 (permalink)  
Antiguo 25/11/2004, 14:06
 
Fecha de Ingreso: octubre-2004
Ubicación: COLOMBIA
Mensajes: 240
Antigüedad: 19 años, 6 meses
Puntos: 3
NO ES POR AGUARTE LA FIESTA, PERO ESTO YA ESTABA EN LOS FAQ'S DEL FORO
  #9 (permalink)  
Antiguo 27/11/2004, 09:49
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
yo lo tome de este post para que no callera de hecho si te haz puesto a leer el post dice por CBBzun.

nos vemos...
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #10 (permalink)  
Antiguo 19/01/2005, 22:20
 
Fecha de Ingreso: enero-2005
Mensajes: 4
Antigüedad: 19 años, 3 meses
Puntos: 0
No me resulto

Tengo win xp sp2, y en el regedit de mis pcs no esta la cadena que dices,,, solo llega hasta policies. Busque por otro lado la cadena y la encontre en LOCAL MACHINE, pero al hacer el cambio y creacion de la clave DisableTaskMgr tampoco me dio resultado. Hay noticias nuevas con respecto al tema?
  #11 (permalink)  
Antiguo 21/01/2005, 21:44
 
Fecha de Ingreso: mayo-2004
Ubicación: En mi casa
Mensajes: 54
Antigüedad: 20 años
Puntos: 0
Si

Si, eso ocurre en SP2, pero relamente lo unico que tienes que hacer es crear en la clave Policies una nueva capeta (clave) cuyo nombre sea System, y dentro de esa clave un nuevo valor alfanumerico que sea DisableTaskMgr al cual le pones el valor 1.
__________________
Quiero que ciencia y tecnología avancen muy rápido, por eso comparto lo que se, podría servir a alguién q esté creando algo genial.
  #12 (permalink)  
Antiguo 04/07/2005, 17:07
 
Fecha de Ingreso: julio-2005
Mensajes: 1
Antigüedad: 18 años, 10 meses
Puntos: 0
funsiona perfecto pero....

GeoAvila
Colaborador

el codigo que has puesto al foro funcion para bloquear pero no desbloquea no se cual sera la rason.
tengo Win XP profecional sp1
nececito saver como bloquear la tecla windows CRL+esc alt+tab y otros.
pero quisiera ver como hacer para estandarisar para todo los windows X y xP

espero respuesta gracias de antemano saludos.
  #13 (permalink)  
Antiguo 05/07/2005, 19:24
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
Cita:
Iniciado por 00000
Si, eso ocurre en SP2, pero relamente lo unico que tienes que hacer es crear en la clave Policies una nueva capeta (clave) cuyo nombre sea System, y dentro de esa clave un nuevo valor alfanumerico que sea DisableTaskMgr al cual le pones el valor 1.
ya intentaste lo que dice ese post para tu problema..?
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #14 (permalink)  
Antiguo 25/07/2008, 08:45
 
Fecha de Ingreso: julio-2008
Mensajes: 2
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Manual de como bloquear CTRL+ALT+SUP, ALT+TAB, Y OTROS con Visual Basic en

te felicito por el bloqueo del boton INICIO, ALT+TAB , pero una combinacion que nos has considerado es : ALT+ESC que permite salir del bloqueo y por ultimo el bloqueo del CTRL+ALT+SUPR no es efectivo con deshabilitar el TASKMGR, pues cuando sale el mensaje del "Administrador" , te da la oportunidad de presionar el boton INICIO antes de cerrar este mensaje y se pierde el bloqueo.
Se que ha pasado mucho tiempo desde que colgaste esta solucion, pero a ver si puedes dar solucion a los 2 puntos que te menciono, es decir en resumen:
- bloqueo de ALT+ESC
- bloqueo de CTRL+ALT+SUPR, mediante codigo como lo hiciste con el boton INICIO.
Gracias por tu ayuda
  #15 (permalink)  
Antiguo 25/07/2008, 10:53
 
Fecha de Ingreso: julio-2008
Mensajes: 2
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Manual de como bloquear CTRL+ALT+SUP, ALT+TAB, Y OTROS con Visual Basic en

amigo CBBZUN ya pude agregar el bloqueo ALT + ESC, revisando en tu codigo te olvidaste considerar el caso ALT+F4, pero tambien fue facil agragarlo, lo unico que falata es como hacer para considerar CTRL+ALT + SUPR, es posible tambien considerarlo en ese mismo codigo? .. porque lo que veo solo es cuando hay la combinacion de 2 teclas ... como seria la variante para 3 teclas?.
gracias la ayuda por adelantado.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 15:18.