抓 图 实 际 上 是 位 图 的 复 制 , Windows在 复 制 位 图 时 是 不 会 受 鼠 标
光 标 的 影 响 的 。 可 以 先 抓 图 , 然 后 在 使 用 DrawIcon将 鼠 标 光 标 画 上 去 。
procedure TForm1.FormClick(Sender: TObject);
var
winHWND, hCur: integer;
winDC: integer;
rect: TRect;
pt: TPoint;
fBitmap: TBitmap;
begin
hCur := GetCursor(); // 取得光标句柄
GetCursorPos(pt); // 取得光标位置
winHWND := GetDesktopWindow();
winDC := GetDC(winHWND);
GetWindowRect(winHWND, rect);
fBitmap := TBitmap.create;
try
fBitmap.width := rect.right - rect.left;
fBitmap.height := rect.bottom - rect.top;
BitBlt(fBitmap.canvas.handle, 0, 0, fBitmap.width, fBitmap.height, winDC, 0, 0, SRCCOPY);
DrawIcon(fBitmap.canvas.handle, pt.x, pt.y, hCur); // 画光标
ReleaseDC(winHWND, winDC);
Image1.Picture.Bitmap.Assign(fBitmap);
finally
fBitmap.Free;
end;
end;