今天需要用到一個功能。就是截圖後,將圖片數據複製到剪貼板。
然後到測試的時候,發現經常出現無法訪問的問題。
然後通過一頓盲測,發現在調用前加上 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;