Microsoft KB Archive/59133

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

Article ID: 59133

Article Last Modified on 8/16/2005

-

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

-



This article was previously published under Q59133



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 &quot;Trapped PRINT SCREEN keystroke&quot; PRINT &quot;Screen will still print unless&quot; PRINT &quot;Interrupt vector changed with&quot; PRINT &quot;C or Assembly routine.&quot; RETURN

Additional query words: QuickBas BasicCom 4.00 4.00b 4.50 6.00 6.00b 7.00 7.10

Keywords: KB59133

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.