Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Screenshot mit Quickinfo ? (https://www.delphipraxis.net/126800-screenshot-mit-quickinfo.html)

thomas2009 2. Jan 2009 19:05


Screenshot mit Quickinfo ?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo
ich habe einige Funktionen von Screenshot aber keine kopiert die Quickinfo am Bildschirm. Wie kann man die Quickinfo dazu beim Screenshot kopieren ?
Die quickinfo kann man mit der Taste "DRUCK" mitkopieren (siehe Anhang) :

Namenloser 2. Jan 2009 19:23

Re: Screenshot mit Quickinfo ?
 
Was für einen Code benutzt du zum Anfertigen des Screenshots? Ich meine mich zu erinnern, dass Varianten mit "CreateCompatibleDC" bei Tooltips, Menüs und transparenten Fenstern andere Ergebnisse liefern als mit "GetDC". Mit "CreateCompatibleDC" sind sie glaube ich sichtbar, bei "GetDC" nicht.

toms 2. Jan 2009 19:47

Re: Screenshot mit Quickinfo ?
 
Hallo

Du könntest per Findwindow() das ToolTip Fenster suchen und dann, falls vorhanden,
einen Snapshot davon machen und auf den bestehenden Screenshot zeichnen.


Delphi-Quellcode:
hToolTip := FindWindow('tooltips_class32', nil);
if IsVisible(hToolTip) then
begin
 // Snapshot vom ToolTip machen
 // Auf den Screenshot zeichnen
end;

thomas2009 2. Jan 2009 20:08

Re: Screenshot mit Quickinfo ?
 
Hallo zusammen
Ich verwende diesen einfachen Procedure:
Delphi-Quellcode:
var
  DC : HDC;
begin
  DC := GetDC (GetDesktopWindow) ;

  try
   DestBitmap.Width := dx;
   DestBitmap.Height := dy;
   BitBlt(DestBitmap.Canvas.Handle, 0, 0, DestBitmap.Width, DestBitmap.Height, DC, X , Y, SRCCOPY) ;
  finally
   ReleaseDC (GetDesktopWindow, DC) ;
  end;

end;
Wo muss ich ändern, damit alles kopiert wird?

mkinzler 2. Jan 2009 20:15

Re: Screenshot mit Quickinfo ?
 
Versuch es mal mit
Delphi-Quellcode:
DC := CreateCompatibleDC( GetDC (GetDesktopWindow));

thomas2009 2. Jan 2009 20:32

Re: Screenshot mit Quickinfo ?
 
Zitat:

Zitat von mkinzler
Versuch es mal mit
Delphi-Quellcode:
DC := CreateCompatibleDC( GetDC (GetDesktopWindow));

Ich erhalte ein weißes Bild

Aber diese Funktion, was ich über google gefunden habe, kopiert alles
Das Prinzip ist so ähnlich, was @Toms vorgeschlagen hat :

Delphi-Quellcode:
procedure CaptureScreen(Bitmap: TBitmap);
const
  CAPTUREBLT = $40000000;
var
  hdcScreen: HDC;
  hdcCompatible: HDC;
  bmp: TBitmap;
  hbmScreen: HBITMAP;
begin
  // Create a normal DC and a memory DC for the entire screen. The
  // normal DC provides a "snapshot" of the screen contents. The
  // memory DC keeps a copy of this "snapshot" in the associated
  // bitmap.
  hdcScreen := CreateDC('DISPLAY', nil, nil, nil);
  hdcCompatible := CreateCompatibleDC(hdcScreen);

  // Create a compatible bitmap for hdcScreen.
  hbmScreen := CreateCompatibleBitmap(hdcScreen,
    GetDeviceCaps(hdcScreen, HORZRES),
    GetDeviceCaps(hdcScreen, VERTRES)
  );

  // Select the bitmaps into the compatible DC.
  SelectObject(hdcCompatible, hbmScreen);

  //Copy color data for the entire display into a
  //bitmap that is selected into a compatible DC.
  bmp := TBitmap.Create;
  bmp.Handle := hbmScreen;

  BitBlt(hdcCompatible,
    0, 0,
    bmp.Width, bmp.Height,
    hdcScreen,
    0, 0,
    SRCCOPY or CAPTUREBLT);

  Bitmap.Assign(bmp);
  bmp.Free;

  DeleteDC(hdcScreen);
  DeleteDC(hdcCompatible);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:07 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz