'模拟键盘 Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, _ ByVal dwFlags As Long, ByVal dwExtraInfo As Long) Const theScreen = 1 Const theForm = 0 Private Sub Command1_Click() Call keybd_event(vbKeySnapshot, theForm, 0, 0) '若theForm改成theScreen则Copy整个Screen DoEvents Picture1.Picture = Clipboard.GetData(vbCFBitmap) End Sub
反了,应该是 Const theScreen = 0 Const theForm = 1
用GetDC获取屏幕DC,然后……天,那个GDI32 API我忘了……
另外一个:Private Declare Function GetDC Lib "user32" ( _ ByVal hwnd As Long) As Long Private Declare Function BitBlt Lib "gdi32" ( _ ByVal hDestDC As Long, _ ByVal X As Long, _ ByVal Y As Long, _ ByVal nWidth As Long, _ ByVal nHeight As Long, _ ByVal hSrcDC As Long, _ ByVal xSrc As Long, _ ByVal ySrc As Long, _ ByVal dwRop As Long) As Long Private Sub Form_Load() Me.Hide Me.AutoRedraw = True BitBlt Me.hDC, 0, 0, Screen.Width, Screen.Height, _ GetDC(0), 0, 0, vbSrcCopy '抓屏 Dim sFile As String sFile = "C:\" & Format(Now, "yyyymmddhhmmss") & ".BMP" SavePicture Me.Image, sFile '保存 MsgBox "当前屏幕图像已经保存到" & sFile, 64 End End Sub
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, _ ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Const theScreen = 1
Const theForm = 0
Private Sub Command1_Click()
Call keybd_event(vbKeySnapshot, theForm, 0, 0) '若theForm改成theScreen则Copy整个Screen
DoEvents
Picture1.Picture = Clipboard.GetData(vbCFBitmap)
End Sub
Const theScreen = 0
Const theForm = 1
ByVal hwnd As Long) As Long
Private Declare Function BitBlt Lib "gdi32" ( _
ByVal hDestDC As Long, _
ByVal X As Long, _
ByVal Y As Long, _
ByVal nWidth As Long, _
ByVal nHeight As Long, _
ByVal hSrcDC As Long, _
ByVal xSrc As Long, _
ByVal ySrc As Long, _
ByVal dwRop As Long) As Long
Private Sub Form_Load()
Me.Hide
Me.AutoRedraw = True
BitBlt Me.hDC, 0, 0, Screen.Width, Screen.Height, _
GetDC(0), 0, 0, vbSrcCopy '抓屏
Dim sFile As String
sFile = "C:\" & Format(Now, "yyyymmddhhmmss") & ".BMP"
SavePicture Me.Image, sFile '保存
MsgBox "当前屏幕图像已经保存到" & sFile, 64
End
End Sub
是不是应该把vbKeySnapshot 改为 vbKeyPrint