Article: Q240653
Product(s): Microsoft Visual Basic for Windows
Version(s): 5.0,6.0
Operating System(s):
Keyword(s): kbprint kbAPI kbClipboard kbPrinting kbSDKWin32 kbVBp kbVBp500 kbVBp600 kbOSWin95 kbOSW
Last Modified: 11-SEP-2001
-------------------------------------------------------------------------------
The information in this article applies to:
- Microsoft Visual Basic Learning Edition for Windows, versions 5.0, 6.0
- Microsoft Visual Basic Professional Edition for Windows, versions 5.0, 6.0
- Microsoft Visual Basic Enterprise Edition for Windows, versions 5.0, 6.0
-------------------------------------------------------------------------------
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:
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 Declare Function GetVersionExA Lib "kernel32" _
(lpVersionInformation As OSVERSIONINFO) As Integer
Private Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
End Type
Private Const KEYEVENTF_KEYUP = &H2
Private Const VK_SNAPSHOT = &H2C
Private Const VK_MENU = &H12
Dim blnAboveVer4 As Boolean
Private Sub Command1_Click()
If blnAboveVer4 Then
keybd_event VK_SNAPSHOT, 0, 0, 0
Else
keybd_event VK_SNAPSHOT, 1, 0, 0
End If
End Sub
Private 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 If
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()
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:
Q161299 HOWTO: Capture and Print the Screen, a Form, or any Window
Q189249 HOWTO: Determine Which 32-Bit Windows Version Is Being Used
Additional query words: PRINTSCREEN ALTPRINTSCREEN ALT+PRINTSCREEN
======================================================================
Keywords : kbprint kbAPI kbClipboard kbPrinting kbSDKWin32 kbVBp kbVBp500 kbVBp600 kbOSWin95 kbOSWin98 kbGrpDSVB kbDSupport kbOSWinME
Technology : kbVBSearch kbAudDeveloper kbZNotKeyword6 kbZNotKeyword2 kbVB500Search kbVB600Search kbVBA500 kbVBA600 kbVB500 kbVB600
Version : :5.0,6.0
Issue type : kbhowto
=============================================================================