AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Suche "echte" Screenshot Funktion

Ein Thema von tofse · begonnen am 29. Jan 2015 · letzter Beitrag vom 29. Jan 2015
Antwort Antwort
tofse

Registriert seit: 6. Jun 2011
Ort: Saarlouis
128 Beiträge
 
Delphi XE Professional
 
#1

Suche "echte" Screenshot Funktion

  Alt 29. Jan 2015, 08:33
Hallo,

ich verwende diese Funktion, um einen Screenshot zu erzeugen

Delphi-Quellcode:
procedure ScreenShot(Bild: TBitMap);
var
  c: TCanvas;
  r: TRect;
begin
  c := TCanvas.Create;
  c.Handle := GetWindowDC(GetDesktopWindow);
  try
    r := Rect(0, 0, Screen.Width, Screen.Height);
    Bild.Width := Screen.Width;
    Bild.Height := Screen.Height;
    Bild.Canvas.CopyRect(r, c, r);
  finally
    ReleaseDC(0, c.Handle);
    c.Free;
  end;
end;
Jetzt ist mir aufgefallen, dass dies kein "echter" Screenshot ist. Ich hänge zwei Beispiele an
Beim einen Screenshot habe ich die "Druck" Taste verwendet, um einen Screenshot zu erzeugen. Da ist dann alles dabei, was auch zu sehen ist.
Den anderen Screenshot habe ich mit dem Delphi Code erzeugt. Da fehlen die Fenster im Paint Programm, es ist also kein "echter" Screenshot

Hat da jemand einen Tipp/ eine Idee?

Danke
Christof
Miniaturansicht angehängter Grafiken
screen_druck.png   screen_delphi.png  
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Suche "echte" Screenshot Funktion

  Alt 29. Jan 2015, 09:08
Hatte in einem Screenshot-Programm von mir folgenden Code erfolgreich im Einsatz:
Delphi-Quellcode:
var
  DesktopDC: HDC;

const
  CAPTUREBLT = $4000000;

procedure TakeScreenshot(Dest: TBitmap; const CaptureRect: TRect);
begin
  Dest.SetSize(CaptureRect.Right-CaptureRect.Left,
    CaptureRect.Bottom-CaptureRect.Top);
  BitBlt(Dest.Canvas.Handle,
    0, 0,
    Dest.Width, Dest.Height,
    DesktopDC,
    CaptureRect.Left, CaptureRect.Top,
    SRCCOPY or CAPTUREBLT);
end;

initialization
  DesktopDC := CreateDC('DISPLAY', nil, nil, nil);

finalization
  DeleteDC(DesktopDC)
  Mit Zitat antworten Zitat
zagota

Registriert seit: 3. Sep 2014
38 Beiträge
 
#3

AW: Suche "echte" Screenshot Funktion

  Alt 29. Jan 2015, 09:13
Ich verwende folgendes:

Delphi-Quellcode:
procedure TRTLCommon.WriteScreenshot;
const
  CAPTUREBLT = $40000000;
var
  hdcScreen: HDC;
  hdcCompatible: HDC;
  bmp: TBitmap;
  hbmScreen: HBITMAP;
  DeskHeight,
    DeskWidth: Integer;
begin
  hdcScreen := CreateDC('DISPLAY', nil, nil, nil);
  hdcCompatible := CreateCompatibleDC(hdcScreen);
  try
    DeskHeight:= Screen.DesktopHeight;
    DeskWidth:= Screen.DesktopWidth;
    hbmScreen := CreateCompatibleBitmap(hdcScreen, DeskWidth, DeskHeight);
    try
      SelectObject(hdcCompatible, hbmScreen);
      bmp := TBitmap.Create;
      try
        bmp.Handle := hbmScreen;
        BitBlt(hdcCompatible, 0, 0, bmp.Width, bmp.Height, hdcScreen, 0, 0, SRCCOPY or CAPTUREBLT);
        bmp.Save....
      finally
        bmp.Free;
      end;
    finally
      DeleteObject(hbmScreen);
    end;
  finally
    DeleteDC(hdcScreen);
    DeleteDC(hdcCompatible);
  end;
end;
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Suche "echte" Screenshot Funktion

  Alt 29. Jan 2015, 09:32
Interessant ist, dass wir unterschiedliche CAPTUREBLT-Konstanten haben. Allerdings ist es wohl meine, die falsch ist. Ist mir wahrscheinlich nicht aufgefallen, weil ich immer Aero aktiviert hatte, wo es meines Wissens nach keinen Unterschied macht.
  Mit Zitat antworten Zitat
tofse

Registriert seit: 6. Jun 2011
Ort: Saarlouis
128 Beiträge
 
Delphi XE Professional
 
#5

AW: Suche "echte" Screenshot Funktion

  Alt 29. Jan 2015, 14:35
Danke
  Mit Zitat antworten Zitat
Insider2004
(Gast)

n/a Beiträge
 
#6

AW: Suche "echte" Screenshot Funktion

  Alt 29. Jan 2015, 18:14
GetFormImage ?
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
Ort: Oberreichenbach
16.492 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

AW: Suche "echte" Screenshot Funktion

  Alt 29. Jan 2015, 18:37
Und wie bekommt man damit alle Formulare des Desktops?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.287 Beiträge
 
Delphi XE2 Professional
 
#8

AW: Suche "echte" Screenshot Funktion

  Alt 29. Jan 2015, 19:12
Hallo,

ich hatte vor ein paar Wochen ein ähnliches Problem
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf