求助:关于VB截图提示“出错521: 不能打开剪切板”
我做的是一个VB截图程序,程序打开flv视频后,截图,然后播放下一个视频,在运行中,会出现“出错521: 不能打开剪切板”错误,不知道如何来出来和产生的原因,请高手指教,下面是截图过程的一部分代码!SourceDC = CreateDC("DISPLAY", 0, 0, 0)
DestDC = CreateCompatibleDC(SourceDC)
Bhandle = CreateCompatibleBitmap(SourceDC, FX_num, FY_num)
SelectObject DestDC, Bhandle
BitBlt DestDC, 0, 0, FX_num, FY_num, SourceDC, X_num, Y_num, &HCC0020
Wnd = Screen.ActiveForm.hwnd
OpenClipboard Wnd
EmptyClipboard
SetClipboardData 2, Bhandle
CloseClipboard
DeleteDC DestDC
ReleaseDC Dhandle, SourceDC
Set pPic = Clipboard.GetData
If pPic Is Nothing Or pPic.Handle = 0 Then
Else
SavePicture pPic, P_name & ".jpg"
End If VB不支持jpeg格式的图片。
后缀是jpg,其实保存的还是bmp图象
lz单步执行,看是哪句报错
Option Explicit其他的应用程序正在使用剪贴板,且不能将其释放给此应用程序。 解码器.播放流.提取帧..
Private Declare Function CreateDC Lib "gdi32" Alias "CreateDCA" (ByVal lpDriverName As String, ByVal lpDeviceName As String, ByVal lpOutput As String, lpInitData As Long) As Long
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 SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject 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 Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function EmptyClipboard Lib "user32" () As Long
Private Declare Function SetClipboardData Lib "user32" (ByVal wFormat As Long, ByVal hMem As Long) As Long
Private Declare Function CloseClipboard Lib "user32" () As Long
Private Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As Long
Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
' 抓取屏幕图像到剪贴板
Private Function GetScreenBitmap(ByVal Left As Long, ByVal Top As Long, ByVal Right As Long, ByVal Bottom As Long)
Dim rWidth As Long
Dim rHeight As Long
Dim SourceDC As Long
Dim DestDC As Long
Dim BHandle As Long
Dim Wnd As Long
Dim DHandle As Long
On Error GoTo Lhandle
rWidth = Right - Left
rHeight = Bottom - Top
SourceDC = CreateDC("DISPLAY", 0, 0, 0)
DestDC = CreateCompatibleDC(SourceDC)
BHandle = CreateCompatibleBitmap(SourceDC, rWidth, rHeight)
SelectObject DestDC, BHandle
BitBlt DestDC, 0, 0, rWidth, rHeight, SourceDC, Left, Top, &HCC0020
Wnd = Screen.ActiveForm.hwnd
OpenClipboard Wnd
EmptyClipboard
SetClipboardData 2, BHandle
CloseClipboard
DeleteDC DestDC
ReleaseDC DHandle, SourceDC
Lhandle:
Exit Function
End Function
Private Sub Command1_Click()
Me.ScaleMode = 3
Picture1.ScaleMode = 3
Picture2.ScaleMode = 3
GetScreenBitmap Picture1.Left + 2, Picture1.Top + 2, Picture1.Left + 2 + Picture1.ScaleWidth, Picture1.Top + 2 + Picture1.ScaleHeight
Picture2.Picture = Clipboard.GetData
'清空剪贴板
OpenClipboard Screen.ActiveForm.hwnd
EmptyClipboard
End Sub
补充:VB , 控件