用delphi在屏幕截图中显示鼠标光标

用delphi在屏幕截图中显示鼠标光标,第1张

概述嗨,我正在制作一个delphi xe函数,功能是截取屏幕,一切顺利,但问题是我没有看到任何图像上的鼠标光标. 代码如下: procedure capturar_pantalla(nombre: string);// Credits :// Based on : http://www.delphibasics.info/home/delphibasicssnippets/screencaptu 嗨,我正在制作一个delphi xe函数,功能是截取屏幕,一切顺利,但问题是我没有看到任何图像上的鼠标光标.

代码如下:

procedure capturar_pantalla(nombre: string);// Credits :// Based on : http://www.delphibasics.info/home/delphibasiCSSnippets/screencapturewithpurewindowsAPI// Thanks to  www.delphibasics.info and n0v4var  uno: integer;  dos: integer;  cre: hDC;  cre2: hDC;  im: hBitmap;  archivo: file of byte;  parriba: TBITMAPfileheader;  cantIDad: pointer;  data: TBITMAPINFO;begin  // Start  cre := getDC(getDesktopWindow);  cre2 := createCompatibleDC(cre);  uno := getDeviceCaps(cre,HORZRES);  dos := getDeviceCaps(cre,VERTRES);  zeromemory(@data,sizeOf(data));  // Config  with data.bmiheader do  begin    biSize := sizeOf(TBITMAPINFOheader);    biWIDth := uno;    biheight := dos;    biplanes := 1;    biBitCount := 24;  end;  with parriba do  begin    bfType := ord('B') + (ord('M') shl 8);    bfSize := sizeOf(TBITMAPfileheader) + sizeOf(TBITMAPINFOheader)      + uno * dos * 3;    bfOffBits := sizeOf(TBITMAPINFOheader);  end;  //  im := createDIBSection(cre2,data,DIB_RGB_colorS,cantIDad,0);  selectObject(cre2,im);  bitblt(cre2,uno,dos,cre,SRCcopY);  releaseDC(getDesktopWindow,cre);  // Make Photo  Assignfile(archivo,nombre);  Rewrite(archivo);  blockWrite(archivo,parriba,sizeOf(TBITMAPfileheader));  blockWrite(archivo,data.bmiheader,sizeOf(TBITMAPINFOheader));  blockWrite(archivo,cantIDad^,uno * dos * 3);end;

当我在屏幕截图中显示鼠标光标时,有人可以解释一下吗?

解决方法 这是一个更清晰的实现,你正在尝试做什么,以及一个演示如何使用它的控制台应用程序. (由于捕获屏幕的时间,它会抓取“应用程序忙”光标,因为在应用程序仍在加载时进行调用.)您可以在需要时找出如何调用它以获得正确的光标.

将鼠标光标捕获到Zarko(Tony的链接).我在这里找到的屏幕捕获代码一段时间(并且有给作者的信用,但它在不同的机器上) – 我明天将更新这篇文章,当我回到那个系统.

program Project2;{$APPTYPE CONSolE}uses  SysUtils,windows,Graphics;procedure DrawCursor (ACanvas:TCanvas; position:TPoint) ;var  HCursor : THandle;begin  HCursor := GetCursor;  DrawIconEx(ACanvas.Handle,position.X,position.Y,HCursor,32,DI_norMAL) ;end;function CaptureWindow(const WindowHandle: HWnd): TBitmap;var  DC: HDC;  wRect: TRect;  CurPos: TPoint;begin  DC := GetwindowDC(WindowHandle);  Result := TBitmap.Create;  try    GetwindowRect(WindowHandle,wRect);    Result.WIDth := wRect.Right - wRect.left;    Result.Height := wRect.Bottom - wRect.top;    BitBlt(Result.Canvas.Handle,Result.WIDth,Result.Height,DC,SRCcopY);    GetCursorPos(CurPos);    DrawCursor(Result.Canvas,CurPos);  finally    ReleaseDC(WindowHandle,DC);  end;end;// Sample usage starts herevar  Bmp: TBitmap;begin  Bmp := CaptureWindow(GetDesktopWindow);  Bmp.Savetofile('D:\Tempfiles\FullScreenCap.bmp');  Bmp.Free;  WriteLn('Screen captured.');  ReadLn;end.
总结

以上是内存溢出为你收集整理的用delphi在屏幕截图中显示鼠标光标全部内容,希望文章能够帮你解决用delphi在屏幕截图中显示鼠标光标所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1268098.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存