La Web del Programador: Comunidad de Programadores
 
    Pregunta:  379 - INTERCEPTAR CTRL+ALT+DEL
Autor:  Gabriel Arenovich
Existe alguna forma en windows de interceptar las teclas CTRL+ALT+DEL para que no aparezca la ventana de cerrar programas de Windows, y así poder asignarle otra función. Me da igual si es con Visual Basic, C++, o con API. Muchas Gracias.

  Respuesta:  Óscar E.L.
Como muy bien ha dicho por ahí arriba Lionel, el código tiene un pequeño error que se soluciona fácilmente, para los que no se hayan dado cuenta y crean que no funciona el código rectificado es el siguiente:

Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, lpvParam As Any, ByVal fuWinIni As Long) As Long

Private Sub Command1_Click()
Dim res As Integer
Dim bVal As Boolean
If Command1.Caption = "Bloquear teclas" Then
Command1.Caption = "Desbloquear teclas"
res = SystemParametersInfo(97, True, bVal, 0)
Else
Command1.Caption = "Bloquear teclas"
res = SystemParametersInfo(97, False, bVal, 0)
End If
End Sub

De tal forma que el caption del botón será "Bloquear teclas".

  Respuesta:  Lionel Vera
Espero que con este codigo soluciones tu problema... Cualquier cosa enviame un E-mail.
solo coloca un command en un formulario y luego pega este codigo.
Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, lpvParam As Any, ByVal fuWinIni As Long) As Long

Private Sub Command1_Click()
Dim res As Integer
Dim bVal As Boolean

If Command1.Caption = "Activado" Then
Command1.Caption = "Desactivado"
res = SystemParametersInfo(97, True, bVal, 0)
Else
Command1.Caption = "Desactivado"
res = SystemParametersInfo(97, False, bVal, 0)
End If
End Sub


  Respuesta:  Fernando Berenguer Doméne
Este código está sacado de la Web del Guille. Espero que te sirva.

¿Cómo evitar el uso de CTRL+ALT+SUPR y ALT+TAB? (sólo en Win95) (5/Oct)
Pues usando el API, como casi siempre. Este truco/comentario, está sacado de las Knowledge Base de Microsoft:
HOWTO: Block CTRL+ALT+DEL and ALT+TAB in Windows 95 - Article ID: Q161133
Así que si quieres el original en inglés ya sabes dónde buscarlo. Resumiendo lo que dicen es que sólo es posible hacerlo en Windows 95 y que seguramente en futuras versiones no estará soportado. Además de las habituales precauciones, ya que si no se pueden usar estas teclas y "casca" el programa... no te digo lo que tendrás que hacer...
Aquí está la declaración de la función que lo permite y un poco de ejemplo para poder hacerla funcionar.

´Declaración de la función:
Private Const SPI_SCREENSAVERRUNNING = 97&
Private Declare Function SystemParametersInfo Lib "User32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, lpvParam As Any, ByVal fuWinIni As Long) As Long

´Para deshabilitar estas teclas:
Dim lngRet As Long
Dim blnOld As Boolean
lngRet = SystemParametersInfo(SPI_SCREENSAVERRUNNING, True, blnOld, 0&)

´Para volver a habilitarlas:
Dim lngRet As Long
Dim blnOld As Boolean
lngRet = SystemParametersInfo(SPI_SCREENSAVERRUNNING, False, blnOld, 0&)

Como recomendación final: asegurate que en el Form_Unload que tengas, haga una llamada a la rutina que vuelve a habilitar estas teclas, así todo volverá a estar como debiera.