home *** CD-ROM | disk | FTP | other *** search
/ Chip 1999 January / Chip_1999-01_cd.bin / zkuste / delphi / info / TIP3.TXT < prev    next >
Text File  |  1998-10-12  |  1KB  |  24 lines

  1. Disabling The System Keys from Your Application
  2. When my application is running, I'd like to prevent users from using Ctrl-Alt-Del and Alt-Tab. What's the best way to do this?
  3.  
  4. This is pretty quick one... The best way I've seen yet is to trick Windows into thinking that a screen saver is running. When Windows thinks a screensaver is active, Ctrl-Alt-Del and Alt-Tab (Win95 only for this) are disabled. You can perform this trickery by calling a WinAPI function, SystemParametersInfo. For a more in-depth discussion about what this function does, I encourage you to refer to the online help.
  5.  
  6. In any case, SystemParametersInfo takes four parameters. Here's its C declaration from the Windows help file:
  7.  
  8. BOOL SystemParametersInfo(
  9.     UINT  uiAction,    // system parameter to query or set
  10.     UINT  uiParam,    // depends on action to be taken
  11.     PVOID  pvParam,    // depends on action to be taken
  12.     UINT  fWinIni     // user profile update flag
  13.    );
  14. For our purposes we'll set uiAction to SPI_SCREENSAVERRUNNING, uiParam to 1 or 0 (1 to disable the keys, 0 to re-enable them), pvParam to a "dummy" pointer address, then fWinIni to 0. Pretty straight-forward. Here's what you do:
  15.  
  16. To disable the keystrokes, write this:
  17.  
  18. SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, @ptr, 0);
  19. To enable the keystrokes, write this:
  20. SystemParametersInfo(SPI_SCREENSAVERRUNNING, 0, @ptr, 0);
  21.  
  22. Not much to it, is there? Thanks to the folks on the Borland Forums for providing this information!
  23.  
  24.