home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #18 / NN_1992_18.iso / spool / comp / lang / c / 12367 < prev    next >
Encoding:
Internet Message Format  |  1992-08-14  |  2.2 KB

  1. Path: sparky!uunet!utoday!jaflrn!jaf
  2. From: Jon Freivald <jaf@jaflrn.UUCP>
  3. Newsgroups: comp.lang.c
  4. Subject: Re: Routine to disable Ctrl-Alt-Del on PC
  5. Message-ID: <5ayiPB4w164w@jaflrn.UUCP>
  6. Date: Fri, 14 Aug 92 21:36:15 EDT
  7. References: <1992Aug13.032504.8555@cs.uow.edu.au>
  8. Organization: The Wizzard's Cave, East Meadow, NY
  9. Lines: 68
  10.  
  11. u9035710@cs.uow.edu.au (Scott Anthony Barnett) writes:
  12.  
  13. > Help !!
  14. > I am after a little routine (either in C or inline assembler) to simply
  15. > disable the Ctrl-Alt-Del interrupt on an IBM PC.
  16. > I am using Borland C++ v 3.0 (in standard ANSI C).
  17. > Also, I would like to disable Ctrl-Break.
  18. > Any help would be appreciated.
  19.  
  20. I'm interested in the Ctrl-Alt-Del myself.  As for the
  21. Ctrl-Break/Ctrl-C, the following works fine:
  22.  
  23. #define    CTRLC    0x23
  24. #define CTRLBRK    0x1B
  25.  
  26. void    interrupt break_handler ( void );
  27. void    disable_ctrl_break ( void );
  28. void    enable_ctrl_break ( void );
  29.  
  30. void interrupt ( *original_ctrl_c_handler ) ( void );
  31. void interrupt ( *original_break_handler ) ( void );
  32.  
  33. /============================================================================
  34.  
  35. void interrupt break_handler ( void )
  36.  
  37. {
  38.     return;        // do nothing - simply catching ctrl-c/ctrl-break
  39. }
  40.  
  41. //===========================================================================
  42.  
  43. void disable_ctrl_break ( void )
  44.  
  45. {
  46.     original_ctrl_c_handler = getvect ( CTRLC );    // get original vector address
  47.     original_break_handler = getvect ( CTRLBRK );
  48.     setvect ( CTRLC, break_handler );        // install our handler
  49.     setvect ( CTRLBRK, break_handler );
  50.     atexit ( enable_ctrl_break );            // insure original handler is reinstalled
  51.                             //    no matter how or when we exit program
  52.     return;
  53. }
  54.  
  55. //===========================================================================
  56.  
  57. void enable_ctrl_break ( void )
  58.  
  59. {
  60.     setvect ( CTRLC, original_ctrl_c_handler);
  61.     setvect ( CTRLBRK, original_break_handler);
  62.     return;
  63. }
  64.  
  65. //===========================================================================
  66.  
  67. Hope this helps...
  68.  
  69. Jon
  70.  
  71. =============================================================================
  72.            Jon Freivald ( jaflrn!jaf@uunet.UU.NET )
  73.      Nothing is impossible for the man who doesn't have to do it.
  74. =============================================================================
  75.