CTRL-C in TP unterbinden

Von: , Frage gestellt am Di, 28. Sep 1999

Hallo zusammen!

Ich suche eine Möglichkeit, das Abbrechen meines Turbo Pascal-Proggis mit CTRL-C unter DOS zu verhindern.
Weiß da wer was?

Nikolas

3 Antworten zu dieser Frage

  1. Antwort von nach 42 Minuten hilfreich
    Re: CTRL-C in TP unterbinden

    Hier eine UNIT:Unit CAD;

    Interface

    Uses Dos;

    Var
    Int9Handler : Pointer;

    Procedure InterceptCtrlAltDel;
    Procedure RestoreCAD;

    Implementation

    Procedure InterceptCtrlAltDel; Assembler;

    Const
    Ctrl = 4;
    Alt = 8;
    Del = $53;
    KbdPort = $60; { Keyboard port }
    KbdCtrlPort = $61; { Keyboard control port }
    PIC = $20; { 8259 Interrupt controller }
    EOI = $20; { end-of-interrupt }

    Asm

    PUSH AX
    PUSH DS
    MOV AX, SEG @Data
    MOV DS, AX
    STI
    in AL, KbdPort
    and AL, 01111111b
    CMP AL, Del
    JNE @2

    @1 : MOV AH, 2 { BIOS Get keyboard flags service }
    inT 16h
    TEST AL, Ctrl + Alt
    JNZ @3

    @2 : PUSHF
    CALL [Int9Handler]
    JMP @4

    @3 : in AL, KbdCtrlPort
    MOV AH, AL
    or AL, 10000000b
    OUT KbdCtrlPort, AL
    XCHG AH, AL
    OUT KbdCtrlPort, AL
    CLI

    MOV AL, EOI
    OUT PIC, AL
    @4 : POP DS
    POP AX
    IRET { make sure we return correctly }
    end; { InterceptCtrlAltDel }

    Procedure RestoreCAD;

    begin
    SETinTVEC (9, Int9Handler);
    end; { RestoreCAD }


    begin
    GETinTVEC (9, Int9Handler);
    SETinTVEC (9, @InterceptCtrlAltDel);
    end. {Unit CAD}


    Glaub, es ging zwar auch einfacher, aber ich hab meine alten TP/BP-Sources grad nicht zur Hand

    • Antwort von nach 6 Tagen hilfreich
      Re^2: CTRL-C in TP unterbinden

      [...] Asm

      PUSH AX
      PUSH DS
      MOV AX, SEG @Data
      MOV DS, AX
      STI
      [...]
      Glaub, es ging zwar auch einfacher, aber
      ich hab meine alten TP/BP-Sources grad
      nicht zur Hand
      Wär aber schön, weil ich nicht viel (besser gesagt nix) von Assembler verstehe...

      Nikolas

  2. Antwort von nach 16 Stunden hilfreich
    Re: CTRL-C in TP unterbinden

    Es gibt da glaube ich eine Funktion die Breaks mit Ctrl-C an und ausschaltet.
    Heisst irgendwie SetCBreak, musst mal sowas aehnliches in der Hilfe suchen.

    Gruss
    Mip

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!