Einzelnen Beitrag anzeigen

Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Screenshot von Fenster hat falschen Titel ( mit Beispielcode )

  Alt 12. Okt 2022, 21:42
So funktionierts bei mir immer, es muss noch ein wenig Hand angelegt werden den Border richtig zu berechnen.
Delphi-Quellcode:
procedure ScreenShot(const ActiveWindow: Boolean; var DestBitmap: TBitmap);
var
  w, h: Integer;
  hWin: Cardinal;
  r: TRect;
  oDC: HDC;
  oCanvas: TCanvas;
  oBitmap: TBitmap;
begin
  if activeWindow then
    hWin := GetForegroundWindow
    else
    hWin := GetDesktopWindow;
  try
    GetWindowRect(hWin, r);
    w := r.Right - r.Left;
    h := r.Bottom - r.Top;
    oCanvas := TCanvas.Create;
    try
      oDC := GetDC(0);
      try
        oBitmap := TBitmap.Create;
        try
          oBitmap.PixelFormat := TPixelFormat.pfDevice;
          oBitmap.Width := w;
          oBitmap.Height := h;
          oCanvas.Handle := oDC;
          oBitmap.Canvas.CopyMode := cmSrcCopy;
          oBitmap.Canvas.CopyRect(
            Rect(0, 0, oBitmap.Width, oBitmap.Height),
            oCanvas,
            Rect(r.Left, r.Top, r.Right, r.Bottom));
        finally
          DestBitmap.Assign(oBitmap);
          oBitmap.Free;
        end;
      finally
        ReleaseDC(0, oDC);
      end;
    finally
      oCanvas.Free;
    end;
  finally
  end;
end;
Gruß vom KodeZwerg

Geändert von KodeZwerg (12. Okt 2022 um 23:20 Uhr) Grund: fixed
  Mit Zitat antworten Zitat