Kommentar von Pawel Kazakow: Das Programm funktioniert nur unter reinem DOS,
nicht in der Windos-DOS-Box!
Eine andere Möglichkeit "Strg + Pause" zu blockieren, zeigt das folgende
Programm auf:
' ****** Strg+Pause blockieren:
dim brk$(3)
' First save the current vectors:
def seg = 0
for i=108 to 111
brk$(i-108)=str$(peek(i))
next
' Then poke new interrupt vectors:
poke 108,83
poke 109,255
poke 110,0
poke 111,240
def seg
'
' ******* Strg + Pause wieder aktivieren
def seg=0
for i=108 to 111
poke i,val(brk$(i-108))
next
def seg
Die Kombination [Strg+Pause] kannst Du bei kompilierten EXE-Programmen
übrigens auch unschädlich machen, indem Du in QuickBASIC beim Menüpunkt
"EXE-Datei erstellen" die Option "Debig-Code erstellen" abschaltetest.
Antwort 2
~~~~~~~~
[ von Helium ( m.beckah*gmx.de ), Dave Stewart und
http://quickbasic.megapage.de ]
Oft ist es ratsam eine Deaktivierung für [Strg+ Pause] und
[Strg+C] einzubauen. Dadurch erhält der Programmierer mehr Kontrolle über sein
Programm. Um diese Tastenkombinationen zu sperren, kannst Du die folgende
Befehlssequenz verwenden:
DEF SEG = 0
FOR x = 0 TO 3
POKE (108 + x), PEEK (112 + x)
NEXT
Kommentar von Pawel Kazakow: Das Programm funktioniert offensichtlich nur
unter reinem DOS, nicht in der DOS-Box von Windows 98.
Die Kombination [Strg+Pause] kannst Du bei kompilierten EXE-Programmen
übrigens auch unschädlich machen, indem Du in QuickBASIC beim Menüpunkt
"EXE-Datei erstellen" die Option "Debug-Code erstellen" abschaltest.
Answer 4
~~~~~~~~
[ by Jim Oliver and Foon ]
This is done using the ON KEY... GOSUB statement, like this:
(Remark by Pawel Kazakow: This programm works only under pure DOS, not in the
Windows DOS box)
KEY 15, CHR$(&H04) + CHR$(70) 'CTRL-BREAK
KEY 16, CHR$(&H04) + CHR$(&H08) + CHR$(83) 'CTRL-ALT-DEL
ON KEY (15) GOSUB 100
ON KEY (16) GOSUB 200
'
DO
...
LOOP
'
100 PRINT "CTRL-BREAK pressed."
RETURN
'
200 PRINT "CTRL-ALT-DEL pressed."
RETURN
This, however, may not work on all systems.
Another way of disabling CTRL-BREAK is as follows:
' DISABLE CTRL-BREAK:
dim brk$(3)
' First save the current vectors:
def seg=0: for i=108 to 111: brk$(i-108)=str$(peek(i)): next
' Then poke new interrupt vectors:
poke 108,83: poke 109,255: poke 110,0: poke 111,240: def seg
'
' RESTORE CTRL-BREAK:
def seg=0: for i=108 to 111: poke i,val(brk$(i-108)): next: def seg
Do make sure you reenable CTRL-BREAK before exiting your program, or it will
stay disabled.
Antwort 5
~~~~~~~~~
[ von Neo386 im QB-Forum, 19.6.2002 ]
Anmerkung zu den obigen Lösungen unter Windows:
Du darfst dein Programm nicht mit der Option "Debug" kompilieren. Dann müsste
es gehen; zumindest sollte dann kein Problem mehr auftauchen - das Programm also
weiter laufen -, wenn du "STRG-BREAK" drückst.
Answer 6
~~~~~~~~
[ Tip by Dave Stewart ]
Remember to make some function to quit the program before starting it with
this code.
DEF SEG = 0
FOR Z = 0 TO 3
POKE (108 + Z), PEEK (112 + Z)
NEXT
Antwort 7
~~~~~~~~~~~
[ von Jan-Tuttas im QB-Forum. 28.1.03 ]
Frage:
Hallo kann mir jemand sagen wie ich mein QB Programm vor dem "Affengriff"
Strg +Alt+Entf schütze?
Antwort:
Das geht so:
STRG + BREAK etc. unterdrücken:
KEY 15, CHR$(4 + 128 + 32 + 64) + CHR$(70): ON KEY(15) GOSUB Nobreak: KEY(15)
ON
KEY 16, CHR$(4 + 128) + CHR$(70): ON KEY(16) GOSUB Nobreak: KEY(16) ON
KEY 17, CHR$(4 + 128 + 32) + CHR$(70): ON KEY(18) GOSUB Nobreak: KEY(17)
ON
KEY 18, CHR$(4 + 128 + 64) + CHR$(70): ON KEY(18) GOSUB Nobreak: KEY(18)
ON
KEY 19, CHR$(4) + CHR$(70): ON KEY(19) GOSUB Nobreak: : KEY(19) ON
KEY 22, CHR$(4 + 64) + CHR$(70): ON KEY(22) GOSUB Nobreak: KEY(22) ON
KEY 23, CHR$(4 + 32) + CHR$(46): ON KEY(23) GOSUB Nobreak: KEY(23) ON
KEY 24, CHR$(4 + 64) + CHR$(46): ON KEY(24) GOSUB Nobreak: KEY(24) ON
KEY 25, CHR$(4 + 32 + 64) + CHR$(46): ON KEY(25) GOSUB Nobreak: : KEY(25)
ON
'
Do
a$ = INKEY$: If a$ = Chr$(13) Then End
Loop
'
Nobreak:
Return
Answer 8
~~~~~~~~~~~~~~~
[ from the QB-Forum-FAQ at www.network54.com/Forum/ ]
*** Question
How to deactivate CTRL + Break and CTRL + C?
*** Answer
Deactivating CTRL + Break and CTRL + C
This is not my code but it works... I left author's remarks:
'QBasic NoBreak v1.0a
'Copyright (c)1995 by Daniel Trimble
'Public Domain - use at your own risk.
'
CLS
DO
KEY 15, CHR$(4 + 128 + 32 + 64) + CHR$(70)
ON KEY(15) GOSUB NoBreak: KEY(15) ON
KEY 16, CHR$(4 + 128) + CHR$(70): ON KEY(16) GOSUB NoBreak: KEY(16) ON
KEY 17, CHR$(4 + 128 + 32) + CHR$(70): ON KEY(17) GOSUB NoBreak
KEY(17) ON: KEY 18, CHR$(4 + 128 + 64) + CHR$(70): ON KEY(18) GOSUB
NoBreak
KEY(18) ON: KEY 19, CHR$(4) + CHR$(70): ON KEY(21) GOSUB NoBreak
KEY(21) ON: KEY 22, CHR$(4 + 64) + CHR$(70)
ON KEY(22) GOSUB NoBreak: KEY(22) ON: KEY 23, CHR$(4 + 32) + CHR$(46)
ON KEY(23) GOSUB NoBreak: KEY(23) ON: KEY 24, CHR$(4 + 64) + CHR$(46)
ON KEY(24) GOSUB NoBreak: KEY(24) ON
KEY 25, CHR$(4 + 32 + 64) + CHR$(46): ON KEY(25) GOSUB NoBreak: KEY(25)
ON
LOCATE 1, 1, 0: PRINT "QBasic NoBreak v1.0a"
LOCATE 2, 1, 0: PRINT "Copyright (c)1995 by Daniel Trimble"
LOCATE 4, 1, 0: PRINT "This program and all source is public domain. I will
not be held responsible"
LOCATE 5, 1, 0: PRINT "for any damage this program may cause. I am not at
fault; use this at your"
LOCATE 6, 1, 0: PRINT "own risk - period!"
LOCATE 15, 1, 0: PRINT "Try pressing either CTRL-BREAK or CTRL-C. Nothing
will happen!"
LOCATE 16, 1, 0: PRINT "To end the program, hit ENTER."
IF INKEY$ = CHR$(13) THEN END
LOOP
NoBreak: RETURN
'ctrl =4 extended keys=128
'num lock=32 c=46
'cap lock=64
This, however, may not work on all systems.
This tip was contributed by Jim Oliver.
Another way of disabling CTRL-BREAK is as follows:
' DISABLE CTRL-BREAK:
dim brk$(3)
' First save the current vectors:
def seg=0: for i=108 to 111: brk$(i-108)=str$(peek(i)): next
' Then poke new interrupt vectors:
poke 108,83: poke 109,255: poke 110,0: poke 111,240: def seg
'
' RESTORE CTRL-BREAK:
def seg=0: for i=108 to 111: poke i,val(brk$(i-108)): next: def
seg
Do make sure you reenable CTRL-BREAK before exiting your program, or it will
stay disabled.