Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Form screenshot (https://www.delphipraxis.net/114041-form-screenshot.html)

taktaky 18. Mai 2008 21:36


Form screenshot
 
Hallo

wie kann man Form1-Screenshot erzeugen?
mit dem Code wird den gesamten Bildschirm kopiert

Bilder für Support zwar wichtig aber der User will gerne nur das Programm-Screen capture. Mehr nicht. Was auf seinem Bildschirm ist, darf man nicht sehen :gruebel:
Delphi-Quellcode:
 

uses JPeg, Graphics, Windows, Classes ...;

var
  B: TBitmap;
  I: TJpegImage;
  DC: hDC;
begin
  B := TBitmap.Create;
  try
    DC := GetDC(hWnd_Desktop);
    try
      B.Width := Screen.Width;
      B.Height := Screen.Height;
// Screenshot als Bitmap machen
      BitBlt(B.Canvas.Handle, 0, 0, B.Width, B.Height, DC, 0, 0, SRCCOPY);
    finally
      ReleaseDC(DC, hWnd_Desktop);
    end;
// Bitmap nach JPEG und speichern
    I := TJpegImage.Create;
    try
      I.Assign(B);
      I.SaveToFile('Filename hier.jpeg');
    finally
      I.Free;
    end;
  finally
    B.Free;
  end;
end;
ich habe versucht mit :
B.Width := Form1.Width;
B.Height := Form2.Height;

Aber das Problem ist hier in Parameter :
Delphi-Quellcode:
      BitBlt(B.Canvas.Handle, 0, 0, B.Width, B.Height, DC, 0, 0, SRCCOPY);
Ich habe versucht so :
Delphi-Quellcode:
BitBlt(Result.Canvas.Handle, Form1.Left, Form1.Top, Result.Width, Result.Height, Desktop, (Form1.left+Form1.width), Form1.Top+Form1.Height, SRCCOPY);

1234588 18. Mai 2008 21:48

Re: Form screenshot
 
Delphi-Quellcode:
DC := GetDC(hWnd_Desktop);
ReleaseDC(DC, hWnd_Desktop);
da solltest du das handle deinies fensters uebergeben

Die Muhkuh 18. Mai 2008 22:41

Re: Form screenshot
 
Und hättest beim Posten auf den Button unter dem Titel geklickt, auf dem unsinnigerweise "Ähnliche Themen" steht, hättest Du auch das hier gefunden. Und sag keinem weiter, dass das Dein eigener Thread ist! :roll:

Dunkel 18. Mai 2008 23:12

Re: Form screenshot
 
Zitat:

Zitat von Die Muhkuh
Und sag keinem weiter, dass das Dein eigener Thread ist! :roll:

So, jetzt kann ich zumindest mit einem Lächeln im Gesicht schlafen gehen... :lol: Gute Nacht!

Pichel 19. Mai 2008 06:15

Re: Form screenshot
 
Zitat:

Zitat von taktaky
wie kann man Form1-Screenshot erzeugen?
mit dem Code wird den gesamten Bildschirm kopiert

Versuch es mal hiermit, sollte auch bei minimierten Fenstern funktionieren ;-)
Delphi-Quellcode:
Function myBMPWindowSnap(var bmp: TBitmap; windowHandle: HWND): boolean;
var rc     : TRect;
    huser32 : THandle;
    F      : function(Hnd: HWND; HdcBlt: HDC; nFlags: UINT): BOOL; stdcall;
begin
   Result := False;
   huser32 := GetModuleHandle(user32);
   if huser32 <> 0 then begin
     @F := GetProcAddress(huser32, 'PrintWindow');
     if @F <> nil then begin
       GetWindowRect(windowHandle, rc);
       bmp.Width := rc.Right - rc.Left;
       bmp.Height := rc.Bottom - rc.Top;
       bmp.Canvas.Lock;
       try
         Result := F(windowHandle, bmp.Canvas.Handle, 0);
       finally
         bmp.Canvas.Unlock;
         if Result and ((bmp.Width = 0) or (bmp.Height = 0))
           then Result := False;
       end;
     end;
   end;
end;

DeddyH 19. Mai 2008 07:29

Re: Form screenshot
 
Ginge das nicht einfach mit GetFormImage :gruebel: ?

taktaky 19. Mai 2008 10:28

Re: Form screenshot
 
Zitat:

Zitat von DeddyH
Ginge das nicht einfach mit GetFormImage :gruebel: ?

GetFormImage kopiert nur Delphi-Objekte !
d.h. wenn ich in meinen Webbrwoser eine Seite aufrufe, dann wird nicht
kopiert

DeddyH 19. Mai 2008 10:34

Re: Form screenshot
 
Von Webbrowser hast Du ja auch nichts gesagt.

Die Muhkuh 19. Mai 2008 11:17

Re: Form screenshot
 
Hast schon versucht das Desktophandle gegen das Handle der Anwendung auszutauschen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:49 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