2016-10-03 1 views
1

en utilisant le code suivant dans QB64 pour piéger le contrôle-Break:Comment piège Ctrl-Alt-Suppr je suis en QB64

ON TIMER(1) GOSUB breaktrap 
TIMER ON 
x = _EXIT ' disable break 
DO 
    _LIMIT 50 
    x$ = INKEY$ 
LOOP 
breaktrap: 
v = _EXIT 
IF v THEN 
    PRINT "*break*" 
    SLEEP 5 
    SYSTEM 
END IF 
RETURN 

Je voudrais savoir s'il y a un moyen de piéger Control-Alt -Delete dans QB64.

+2

AFAIK, la réponse est non, ou tout au moins vous ne devriez pas sans une très bonne raison. La séquence de touches génère une interruption matérielle que le système d'exploitation gère. Par exemple, Windows XP démarre le Gestionnaire des tâches si je me souviens bien, et Windows Vista et plus tard vous amènera à un écran qui vous permet de vous déconnecter, de démarrer le Gestionnaire des tâches ou de verrouiller l'ordinateur. Si un autre programme devient hors de contrôle, j'aimerais pouvoir l'arrêter, et je ne peux pas le faire aussi facilement pendant que votre programme qui piège Ctrl-Alt-Del est en cours d'exécution. –

+0

Ce lien décrit pourquoi piéger Control-Alt-Break ne peut être fait sans écrire votre propre DLL GINA: https://msdn.microsoft.com/en-us/library/aa375457(v=vs.85).aspx – eoredson

Répondre

0

Cette snip décrit pourquoi Control-Alt-Delete ne se coince pas:

CONST KEY_RSHIFT& = 100303 
CONST KEY_LSHIFT& = 100304 
CONST KEY_RCTRL& = 100305 
CONST KEY_LCTRL& = 100306 
CONST KEY_RALT& = 100307 
CONST KEY_LALT& = 100308 
DO 
    x = _KEYHIT 
    IF x = CVI(CHR$(0) + CHR$(83)) THEN 
     IF _KEYDOWN(KEY_RCTRL&) OR _KEYDOWN(KEY_LCTRL&) THEN 
      IF _KEYDOWN(KEY_RALT&) OR _KEYDOWN(KEY_LALT&) THEN 
       PRINT "KEYHIT: Ctrl-Alt-Delete" 
      ELSE 
       PRINT "KEYHIT: Ctrl-Delete" 
      END IF 
     ELSE 
      IF _KEYDOWN(KEY_RALT&) OR _KEYDOWN(KEY_LALT&) THEN 
       PRINT "KEYHIT: Alt-Delete" 
      ELSE 
       PRINT "KEYHIT: Delete" 
      END IF 
     END IF 
    END IF 
    k$ = INKEY$ 
LOOP UNTIL k$ = CHR$(27) 
+0

Ce qui précède le code a été écrit pour QB64. – eoredson