![]() |
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) ------------------------------------------------------------------ :pirata: 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 -------------------------------------------------------------- :pensando: 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) --------------------------------------------------------------- :pirata: 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!!! :-D :arriba: |
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. |
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!! |
hola, sólo sirve para WinXP??? |
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. |
Les ha servido el manual? |
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. |
NO ES POR AGUARTE LA FIESTA, PERO ESTO YA ESTABA EN LOS FAQ'S DEL FORO |
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... |
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? |
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. |
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. |
Cita:
|
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 |
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. |
La zona horaria es GMT -6. Ahora son las 22:16. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2025, Jelsoft Enterprises Ltd.