HOWTO: Copy the Screen or Active Window to the Clipboard from Visual Basic

ID: Q240653


The information in this article applies to:
  • Microsoft Visual Basic Learning, Professional, and Enterprise Editions for Windows, versions 5.0, 6.0
    on the following platforms: NT, Win95, Win98


SUMMARY

This article demonstrates how to programmatically copy the active window or the whole screen to the clipboard and print the image.


MORE INFORMATION

The code included in Knowledge Base article:

Q161299 HOWTO: Capture and Print the Screen, a Form, or any Window
shows how to capture any form or window, including the screen, and place it in a Visual Basic Picture object. If the only requirement is to copy the active window or screen to the clipboard, the keybd_event API is a much easier and lower overhead approach. Calling the keybd_event API achieves the same functionality as entering the key combinations PRINTSCRN (copy the screen to the clipboard) or ALT+PRINTSCRN (copy the active window to the clipboard). If you also need to print the image, a hidden PictureBox can provide this functionality.

Step-by-step Example

  1. Start a new Visual Basic Standard EXE project. Form1 is created by default.


  2. Add three CommandButtons and a PictureBox to Form1.


  3. Add the following code into the General Declarations section of Form1:


  4. 
    Option Explicit
    
    Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal _
       bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
    
    Private Const KEYEVENTF_EXTENDEDKEY = &H1
    Private Const KEYEVENTF_KEYUP = &H2
    Private Const VK_SNAPSHOT = &H2C
    Private Const VK_MENU = &H12
    
    Private Sub Command1_Click()
       keybd_event VK_SNAPSHOT, 1, 0, 0
    End Sub
    
    Private Sub Command2_Click()
       keybd_event VK_MENU, 0, 0, 0
       keybd_event VK_SNAPSHOT, 0, 0, 0
       keybd_event VK_SNAPSHOT, 0, KEYEVENTF_KEYUP, 0
       keybd_event VK_MENU, 0, KEYEVENTF_KEYUP, 0
    End Sub
    
    Private Sub Command3_Click()
       ' Load the captured image into a PictureBox and print it
       Picture1.Picture = Clipboard.GetData()
       Printer.PaintPicture Picture1.Picture, 0, 0
       Printer.EndDoc
    End Sub
    
    Private Sub Form_Load()
       Picture1.Visible = False
       Command1.Caption = "Print Screen"
       Command2.Caption = "Alt+Print Screen"
       Command3.Caption = "Print Image"
    End Sub 
  5. Open Microsoft Paint, and then run the project.


  6. Click the Print Screen button, switch to Paint, and press CTRL+V to paste the contents of the clipboard into Paint. The entire screen is pasted.


  7. Click the Alt+Print Screen button, switch to Paint as before, and press CTRL+V again. Only the active window is pasted.


  8. Click the Print Image button and the captured image will print (using a hidden PictureBox).



REFERENCES

For additional information, please click the article number below to view it in the Microsoft Knowledge Base:

Q161299 HOWTO: Capture and Print the Screen, a Form, or any Window

Additional query words: PRINTSCREEN ALTPRINTSCREEN ALT+PRINTSCREEN

Keywords : kbAPI kbClipboard kbPrinting kbSDKWin32 kbVBp kbVBp500 kbVBp600 kbGrpVB kbDSupport
Version : WINDOWS:5.0,6.0
Platform : WINDOWS
Issue type : kbhowto


Last Reviewed: September 2, 1999
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.