You are currently offline, waiting for your internet to reconnect

How To Copy the Screen or Active Window to the Clipboard from Visual Basic

This article was previously published under Q240653
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:
161299 How To 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:
    Option ExplicitPrivate Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal _   bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)Private Declare Function GetVersionExA Lib "kernel32" _      (lpVersionInformation As OSVERSIONINFO) As IntegerPrivate Type OSVERSIONINFO    dwOSVersionInfoSize As Long    dwMajorVersion As Long    dwMinorVersion As Long    dwBuildNumber As Long    dwPlatformId As Long    szCSDVersion As String * 128End TypePrivate Const KEYEVENTF_KEYUP = &H2Private Const VK_SNAPSHOT = &H2CPrivate Const VK_MENU = &H12Dim blnAboveVer4 As BooleanPrivate Sub Command1_Click()    If blnAboveVer4 Then        keybd_event VK_SNAPSHOT, 0, 0, 0    Else        keybd_event VK_SNAPSHOT, 1, 0, 0    End IfEnd SubPrivate Sub Command2_Click()    If blnAboveVer4 Then        keybd_event VK_SNAPSHOT, 1, 0, 0    Else        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 IfEnd SubPrivate Sub Command3_Click()    ' Load the captured image into a PictureBox and print it    Picture1.Picture = Clipboard.GetData()    Printer.PaintPicture Picture1.Picture, 0, 0    Printer.EndDocEnd SubPrivate Sub Form_Load()    Dim osinfo As OSVERSIONINFO    Dim retvalue As Integer       osinfo.dwOSVersionInfoSize = 148    osinfo.szCSDVersion = Space$(128)    retvalue = GetVersionExA(osinfo)    If osinfo.dwMajorVersion > 4 Then blnAboveVer4 = True    Picture1.Visible = False    Command1.Caption = "Print Screen"    Command2.Caption = "Alt+Print Screen"    Command3.Caption = "Print Image"End Sub					
  4. Open Microsoft Paint, and then run the project.
  5. 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.
  6. Click the Alt+Print Screen button, switch to Paint as before, and press CTRL+V again. Only the active window is pasted.
  7. Click the Print Image button and the captured image will print (using a hidden PictureBox).
REFERENCES
For additional information, please click the article numbers below to view them in the Microsoft Knowledge Base:
161299 How To Capture and Print the Screen, a Form, or any Window

189249 How To Determine Which 32-Bit Windows Version Is Being Used
PRINTSCREEN ALTPRINTSCREEN ALT+PRINTSCREEN
Properties

Article ID: 240653 - Last Review: 06/29/2004 23:20:00 - Revision: 2.1

Microsoft Visual Basic 5.0 Learning Edition, Microsoft Visual Basic 6.0 Learning Edition, Microsoft Visual Basic 5.0 Professional Edition, Microsoft Visual Basic 6.0 Professional Edition, Microsoft Visual Basic 5.0 Enterprise Edition, Microsoft Visual Basic 6.0 Enterprise Edition

  • kbhowto kbprint kbapi kbclipboard KB240653
Feedback
.microsoft.com/c.gif?DI=4050&did=1&t=">