这代码vb 截图为什么连对话框也截了???

来源:百度知道 编辑:UC知道 时间:2024/05/18 08:48:36
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Const KEYEVENTF_KEYUP = &H2

Private Sub Form_Click()
Dim FileName As String
CommonDialog2.CancelError = True
CommonDialog2.Flags = cdlOFNOverwritePrompt Or cdlOFNHideReadOnly Or cdlOFNNoChangeDir Or cdlOFNPathMustExist
On Error GoTo 100
CommonDialog2.Filter = "Bmp文件(*.bmp)| *.bmp|Jpg文件(*.jpg)|*.jpg |Ico文件(*.ico)|*.ico"
CommonDialog2.FilterIndex = 2
CommonDialog2.ShowSave
FileName = CommonDialog2.FileName
keybd_event 18, 0, 0, 0
keybd_event vbKeySnapshot, 0&, 0&, 0&
DoEvents
keybd_event 18, 0, KEYEVENTF_KEYUP, 0
SavePicture Clipboard.GetData, FileName
End Sub
怎的代码才能避免把对话框也保存了!!????

1、在keybd_event 18, 0, 0, 0 前判断对话框关闭没有。
有2种方法,第一种找对话框(findwindow),第二种找当前窗口(getfocus)是不是对话框。
2、在keybd_event 18, 0, 0, 0 前延时几毫秒

这是模拟硬件按键的Printt Screen进行全屏截图的, 你可以在画图程序中试一个.

首先, 先按一下Prt Sc/SysRq键, 即Print Screen键, 然后在小画家中按Ctrl+V试试, 是不是把全屏的画面都截取下来了...

你可以先在未显示对话框前就把图像给保存到一个临时文件如"tmp.01",再在对话框后拷贝文件到指定文件名