AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Bildschirmfoto knipst nicht alles
Thema durchsuchen
Ansicht
Themen-Optionen

Bildschirmfoto knipst nicht alles

Ein Thema von KodeZwerg · begonnen am 29. Mai 2018 · letzter Beitrag vom 4. Jun 2018
 
Benutzerbild von KodeZwerg
KodeZwerg

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

Bildschirmfoto knipst nicht alles

  Alt 29. Mai 2018, 00:15
Hi, ich probiere mich mal am Knipsen von Fenstern, es funktioniert ja eigentlich auch schon relativ gut.
Bei manchen Programmen die ich Knipse fehlt leider Bildinhalt, ich habe mal mit professioneller Screenshot-Software den Fehler geknipst damit ich es irgendwie besser Erklären kann.
Im Hintergrund mein geknipstes Bild in IrfanView, im Vordergrund das was ich Knipsen wollte da fehlt was.jpg
Da sieht man das in der Menu-Leiste nicht alles vom Original aufgenommen wurde.
Das ist eines der Probleme, das andere, wenn ich OpenGL/DirectX Anwendungen starte und Knipse entstehen nur schwarze Bilder, gibts da ein Trick?

Mit diesem Code erstelle ich die Bilder.
Delphi-Quellcode:
procedure TForm1.Screenshot (const FullWindow: Boolean = True);
var
  Win: HWND;
  DC: HDC;
  Bmp: TBitmap;
  FileName: string;
  WinRect: TRect;
  Width: Integer;
  Height: Integer;
begin
  Form1.Label1.Caption := 'Error: No Handle!';
  Form1.Hide;
  try
    Application.ProcessMessages;
    Win := GetForegroundWindow;
    if Win = 0 then Exit;
    Form1.Label1.Caption := 'Error during save!';

    if FullWindow then
    begin
      GetWindowRect(Win, WinRect);
      DC := GetWindowDC(Win);
    end else
    begin
      Windows.GetClientRect(Win, WinRect);
      DC := GetDC(Win);
    end;
    try
      Width := WinRect.Right - WinRect.Left;
      Height := WinRect.Bottom - WinRect.Top;

      Bmp := TBitmap.Create;
      try
        Bmp.Height := Height;
        Bmp.Width := Width;
        BitBlt(Bmp.Canvas.Handle, 0, 0, Width, Height, DC, 0, 0, SRCCOPY);
        FileName := 'Screenshot_' +
          FormatDateTime('mm-dd-yyyy-hhnnss', Now());
        Bmp.SaveToFile(Format('.\%s.bmp', [FileName]));
      finally
        Form1.Label1.Caption := 'Saved!';
        Bmp.Free;
      end;
    finally
      ReleaseDC(Win, DC);
    end;
  finally
    Form1.Show;
  end;
end;
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz