Screenshot, aber mit Mauszeiger ?

Antworten
malabarista
Beiträge: 321
Registriert: Sa 11. Jun 2016, 12:16
OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0
CPU-Target: 64Bit
Wohnort: Konstanz

Screenshot, aber mit Mauszeiger ?

Beitrag von malabarista »

Ich erstelle einen Screenshot nach dem üblichen Standard:

Code: Alles auswählen

 
  bild := TPortableNetworkGraphic.Create;
  ScreenDC := GetDC(0);
  bild.LoadFromDevice(ScreenDC);
  ReleaseDC(0,ScreenDC);
 

Funktioniert auch.

Aber ich hätte gerne den Mauszeiger mit im Screenshot. Ist das irgendwie möglich ?
Oder muss ich die Koordinaten des Mauszeigers bestimmen und ihn nachträglich in diese Grafik einkopieren ?

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Screenshot, aber mit Mauszeiger ?

Beitrag von wp_xyz »

Du malst einfach den Cursor gleich hinterher ins Bitmap. Idee nach https://stackoverflow.com/questions/219 ... ith-delphi

Code: Alles auswählen

procedure DrawCursor(ACanvas:TCanvas; Position:TPoint) ;
var
  HCursor : THandle;
begin
  HCursor := GetCursor;
  DrawIconEx(ACanvas.Handle, Position.X, Position.Y,
              HCursor, 32, 32, 0, 0, DI_NORMAL) ;
end;
 
function CreateBitmapFromScreenshot(WithMouse: Boolean): TBitmap;
var
  screenDC: HDC;
  CurPos: TPoint;
begin
  Result := TBitmap.Create;
  screenDC := GetDC(0);
  try
    Result.LoadFromDevice(screenDC);
    if WithMouse then begin
      GetCursorPos(CurPos);
      DrawCursor(Result.Canvas, CurPos);
    end;
  finally
    ReleaseDC(0, screenDC);
  end;
end;

Benötigt die Unit Windows, aber sicher geht das auch plattformunabhängig.

malabarista
Beiträge: 321
Registriert: Sa 11. Jun 2016, 12:16
OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0
CPU-Target: 64Bit
Wohnort: Konstanz

Re: Screenshot, aber mit Mauszeiger ?

Beitrag von malabarista »

Danke. Ich brauche es nur für Windows.

Antworten