今天需要用到一个功能。就是截图后,将图片数据复制到剪贴板。
然后到测试的时候,发现经常出现无法访问的问题。
然后通过一顿盲测,发现在调用前加上 clipboard.open; 就可以。先打开,然后就能设置了。
procedure TfrmUploadPic.GetScreenPic;
var
bmp : TBitmap;
can : TCanvas;
dc: HDC;
begin
Clipboard.Clear;
Clipboard.Open;
bmp := TBitmap.Create;
bmp.Width := Screen.Width;
bmp.Height := Screen.Height;
dc := GetDC(0);
can := TCanvas.Create;
can.Handle := dc;
bmp.Canvas.CopyRect(Rect(0,0,Screen.Width,Screen.Height),can,Rect(0,0,Screen.Width,Screen.Height));
// Clipboard.Assign(bmp);
Clipboard.SetAsHandle(CF_BITMAP,bmp.Handle);
can.Free;
ReleaseDC(0,dc);
end;