2024年5月11日发(作者:)

精品文档

利用VB捕捉并保存屏幕图像

大家知道在VB下利用API函数Bitblt可以将屏幕或者窗口上的图象拷贝到VB

中的PictureBox对象中,但是如果简单的利用PictureBox的SavePicture函数

来保存图象,会发现什么也保存不了。这篇文章就是介绍如何捕获并利用

Windows下的OLE API函数保存图象。

首先来看源程序,首先建立一个新的工程文件,然后在Form1中加入5个

CommandButton对象和一个PictureBox对象,然后在Form1中加入以下代码:

Option Explicit

Option Base 0

Private Type PALETTEENTRY

peRed As Byte

peGreen As Byte

peBlue As Byte

peFlags As Byte

End Type

Private Type LOGPALETTE

palVersion As Integer

palNumEntries As Integer

palPalEntry(255) As PALETTEENTRY

End Type

Private Type GUID

Data1 As Long

Data2 As Integer

Data3 As Integer

Data4(7) As Byte

End Type

Private Const RASTERCAPS As Long = 38

Private Const RC_PALETTE As Long = &H100

Private Const SIZEPALETTE As Long = 104

Private Type RECT

Left As Long

Top As Long

Right As Long

Bottom As Long

End Type

精品文档

精品文档

Private Declare Function CreateCompatibleDC Lib "GDI32" (ByVal hDC As

Long) As Long

Private Declare Function CreateCompatibleBitmap Lib "GDI32" (ByVal hDC

As Long, _

ByVal nWidth As Long, ByVal nHeight As Long) As Long

Private Declare Function GetDeviceCaps Lib "GDI32" (ByVal hDC As Long,

ByVal _

iCapabilitiy As Long) As Long

Private Declare Function GetSystemPaletteEntries Lib "GDI32" (ByVal hDC

As Long, _

ByVal wStartIndex As Long, ByVal wNumEntries As Long,

lpPaletteEntries _

As PALETTEENTRY) As Long

Private Declare Function CreatePalette Lib "GDI32" (lpLogPalette As

LOGPALETTE) _

As Long

Private Declare Function SelectObject Lib "GDI32" (ByVal hDC As Long,

ByVal hObject _

As Long) As Long

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 DeleteDC Lib "GDI32" (ByVal hDC As Long) As Long

Private Declare Function GetForegroundWindow Lib "USER32" () As Long

Private Declare Function SelectPalette Lib "GDI32" (ByVal hDC As Long,

ByVal hPalette _

As Long, ByVal bForceBackground As Long) As Long

Private Declare Function RealizePalette Lib "GDI32" (ByVal hDC As Long)

As Long

Private Declare Function GetWindowDC Lib "USER32" (ByVal hWnd As Long)

As Long

Private Declare Function GetDC Lib "USER32" (ByVal hWnd As Long) As Long

Private Declare Function GetWindowRect Lib "USER32" (ByVal hWnd As Long,

lpRect As _

RECT) As Long

Private Declare Function ReleaseDC Lib "USER32" (ByVal hWnd As Long, ByVal

hDC As _

精品文档