Delphi实现屏幕截图、窗口截图、指定区域截图

Use Jpeg

procedure TForm1.snapscreen(a,b,c,d:Integer);
var
bmpscreen:Tbitmap;
jpegscreen:Tjpegimage;
FullscreenCanvas:TCanvas;
dc:HDC;
sourceRect, destRect: TRect;
begin
try
dc:=getdc(0);
fullscreencanvas:=Tcanvas.Create;
fullscreencanvas.Handle:=dc;
bmpscreen:=Tbitmap.create;
bmpscreen.Width :=c-a;
bmpscreen.Height :=d-b;
sourcerect:=rect(0,0,c-a ,d-b );
destrect:= rect(a,b,c,d);
bmpscreen.Canvas.CopyRect(sourcerect,fullscreenCanvas,destrect);
jpegscreen:=Tjpegimage.Create ;
jpegscreen.Assign (bmpscreen);
jpegscreen.CompressionQuality:=100;
jpegscreen.SaveToFile(ExtractFilePath(ParamStr(0))+'tmp.jpg');
FullscreenCanvas.Free;
bmpscreen.Free;
jpegscreen.Free ;
ReleaseDC(0, DC);
except
end;
end; 
procedure TForm1.Button1Click(Sender: TObject); begin snapscreen(self.Left,self.Top,Self.Left+self.Width,Self.Top+self.Height); end;

  

// www.delphitop.com

转载于:https://www.cnblogs.com/blogpro/p/11426636.html

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Delphi7 中实现指定窗口找到指定图片并单击,可以使用 Windows API 函数和 Delphi7 的 VCL 库。 首先,使用 FindWindow 函数查找目标窗口的句柄。例如,要查找名为“Notepad”的窗口,可以使用以下代码: ```delphi var targetWindow: HWND; begin targetWindow := FindWindow(nil, 'Notepad'); if (targetWindow = 0) then begin ShowMessage('Target window not found!'); Exit; end; // ... end; ``` 接下来,使用 GetDC 函数获取窗口的设备上下文(DC),并使用 BitBlt 函数将窗口的内容复制到一个位图中。然后,可以使用 Delphi7 的 TBitmap 类来加载和查找目标图片。 ```delphi var hdc: HDC; bmp: TBitmap; begin hdc := GetDC(targetWindow); bmp := TBitmap.Create; try bmp.Width := Screen.Width; bmp.Height := Screen.Height; BitBlt(bmp.Canvas.Handle, 0, 0, bmp.Width, bmp.Height, hdc, 0, 0, SRCCOPY); // Find target image in bmp and get its position // ... finally ReleaseDC(targetWindow, hdc); bmp.Free; end; end; ``` 一旦找到了目标图片的位置,可以使用 Windows API 函数 PostMessage 或 Delphi7 的 SendMessage 方法向目标窗口发送鼠标单击事件。例如,以下代码将在目标窗口中单击位于 (x, y) 处的像素: ```delphi var lParam: LPARAM; begin lParam := (y shl 16) + x; PostMessage(targetWindow, WM_LBUTTONDOWN, MK_LBUTTON, lParam); PostMessage(targetWindow, WM_LBUTTONUP, 0, lParam); end; ``` 请注意,这只是一个简单的示例,实际实现可能需要更复杂的代码来处理异常情况和错误处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值