|
|
![]() |
|
||
|
|
|||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||
| Visual Basic Bitmap Routines BitBlt: Mimicking the PrintScreen Function |
||
| Posted: | Thursday December 26, 1996 | |
| Updated: | Monday December 26, 2011 | |
| Applies to: | VB4-32, VB5, VB6 and VB3, VB4-16 with appropriate declarations | |
| Developed with: | VB4-32, Windows 95 | |
| OS restrictions: | None | |
| Author: | VBnet - Randy Birch | |
|
Related: |
BitBlt: Mimicking the PrintScreen Function BitBlt: Mimicking PrintScreen to Create a 'PrintForm' CreateEnhMetaFile: Saving a PrintScreen as a Windows Enhanced Metafile InflateRect: Highlighting External Windows keybd_event: Calling Windows' PrintScreen Function OleCreatePictureIndirect: Mimicking PrintScreen Using OLE |
|
| Prerequisites |
| None. |
|
|
| The following code will copy the contents of the desktop (the screen) into a picture box on a form. |
| BAS Module Code |
| None. |
|
|
| Form Code |
|
|
| To a form add a command button (Command1) and a picture (Picture1), along with the following code: |
|
|
Option Explicit '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Copyright ©1996-2011 VBnet/Randy Birch, All Rights Reserved. ' Some pages may also contain other copyrights by the author. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Distribution: You can freely use this code in your own ' applications, but you may not reproduce ' or publish this code on any web site, ' online service, or distribute as source ' on any media without express permission. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Private Declare Function BitBlt Lib "gdi32" _
(ByVal hDCDest As Long, ByVal XDest As Long, _
ByVal YDest As Long, ByVal nWidth As Long, _
ByVal nHeight As Long, ByVal hDCSrc As Long, _
ByVal XSrc As Long, ByVal YSrc As Long, _
ByVal dwRop As Long) As Long
Private Declare Function GetDesktopWindow Lib "user32" () As Long
Private Declare Function GetWindowDC Lib "user32" _
(ByVal hWnd As Long) As Long
Private Declare Function ReleaseDC Lib "user32" _
(ByVal hWnd As Long, ByVal hdc As Long) As Long
Private Sub Command1_Click()
PrintScreen
End Sub
Private Sub PrintScreen()
Dim hWndDesk As Long
Dim hDCDesk As Long
Dim LeftDesk As Long
Dim TopDesk As Long
Dim WidthDesk As Long
Dim HeightDesk As Long
'define the screen coordinates (upper
'corner (0,0) and lower corner (Width, Height)
LeftDesk = 0
TopDesk = 0
WidthDesk = Screen.Width \ Screen.TwipsPerPixelX
HeightDesk = Screen.Height \ Screen.TwipsPerPixelY
'get the desktop handle and display context
hWndDesk = GetDesktopWindow()
hDCDesk = GetWindowDC(hWndDesk)
'copy the desktop to the picture box
Call BitBlt(Picture1.hdc, 0, 0, _
WidthDesk, HeightDesk, hDCDesk, _
LeftDesk, TopDesk, vbSrcCopy)
Call ReleaseDC(hWndDesk, hDCDesk)
End Sub |
| Comments |
| The real keyboard PrintScreen command cannot be activated
using SendKeys, nor by setting any combination of key codes in Visual Basic without the use of APIs. However, it can be called to copy the
screen to the clipboard (see links at the top of this page). Also see OleCreatePictureIndirect. In addition, the Bitmap page also contains the API code to call the real PrintScreen routine. See the links at the top of this page. |
|
|
|
|
|
|||||
|
|||||
|
|
|||||
|
Copyright ©1996-2011 VBnet and Randy Birch. All Rights Reserved. |
![]() |