How to Trap PRINT SCREEN Key on an Extended (101-Key) Keyboard

Article translations Article translations
Article ID: 59133 - View products that this article applies to.
This article was previously published under Q59133
Expand all | Collapse all

On This Page

SUMMARY

You can detect (trap) the PRINT SCREEN (or SHIFT+PRINT SCREEN, or PRT SCR, and so on) key using the ON KEY GOSUB statement. This technique does not work under Microsoft Windows, and may not work reliably on all computers (it depends upon the type of ROM BIOS).

Although Basic can detect the key press with the ON KEY GOSUB statement, the PRINT SCREEN action is controlled through the ROM BIOS interrupt table, and cannot be disabled directly with Basic. To disable the print screen utility, the interrupt vector must be remapped with a C or assembly routine.

MORE INFORMATION

Here is the syntax of the KEY statement, where n=15-25 can be user-defined key combinations to trap:
   KEY n, CHR$(keyboardflag) + CHR$(scancode)
				
The following chart shows the keyboard flags and scan codes for PRINT SCREEN and SHIFT+PRINT SCREEN for standard and extended keyboards:
                          Standard   Extended
                          --------   --------
   Keyboard flag for:

      No    SHIFT         &H00       &H80
      LEFT  SHIFT         &H02       &H82
      RIGHT SHIFT         &H01       &H81

   Scan code for:

      PRINT SCREEN        &H37       &H2A
				
Note: The keyboard flags are affected by CAPS LOCK and NUM LOCK. The above values assume that CAPS LOCK and NUM LOCK are off. Add &H40 to the keyboard flag for CAPS LOCK, and add &H20 for NUM LOCK.

Code Example

The following code example detects each of the PRINT SCREEN and SHIFT+PRINT SCREEN combinations listed above:
'Note: This program detects PRINT SCREEN and SHIFT+PRINT SCREEN key
'      combinations on standard and extended keyboards with CAPS LOCK
'      and NUM LOCK off.
'
'Also note: This program does NOT disable the PRINT SCREEN action
'           (that is, the screen is still printed). See the explanation
'           in the text of the above article.
KEY 15, CHR$(&H00) + CHR$(&H37)        'Standard no SHIFTs
KEY 16, CHR$(&H02) + CHR$(&H37)        'Standard LEFT SHIFT
KEY 17, CHR$(&H01) + CHR$(&H37)        'Standard RIGHT SHIFT
KEY 18, CHR$(&H80) + CHR$(&H2A)        'Extended no SHIFTs
KEY 19, CHR$(&H82) + CHR$(&H2A)        'Extended LEFT SHIFT
KEY 20, CHR$(&H81) + CHR$(&H2A)        'Extended RIGHT SHIFT
FOR i%=15 TO 20
  ON KEY(i%) GOSUB Handle:
  KEY(i%) ON
NEXT
WHILE INKEY$<>CHR$(27) : WEND        'Press ESC to end
END

Handle: PRINT "Trapped PRINT SCREEN keystroke"
        PRINT "Screen will still print unless"
        PRINT "Interrupt vector changed with"
        PRINT "C or Assembly routine."
        RETURN
				

Properties

Article ID: 59133 - Last Review: August 16, 2005 - Revision: 2.1
APPLIES TO
  • Microsoft QuickBasic 4.0
  • Microsoft QuickBASIC 4.0b
  • Microsoft QuickBasic 4.5 for MS-DOS
  • Microsoft BASIC Compiler 6.0
  • Microsoft BASIC Compiler 6.0b
  • Microsoft BASIC Professional Development System 7.0
  • Microsoft BASIC Professional Development System 7.1
Keywords: 
KB59133
Retired KB Content Disclaimer
This article was written about products for which Microsoft no longer offers support. Therefore, this article is offered "as is" and will no longer be updated.

Give Feedback

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com