Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Jpg Screenshot von einem Fenster (https://www.delphipraxis.net/56447-jpg-screenshot-von-einem-fenster.html)

Neutral General 5. Nov 2005 19:23


Jpg Screenshot von einem Fenster
 
Hi,

Wie kann man mit Delphi ein Screenshot von einem Fenster machen ?
Also nicht von dem ganzen Bildschirm. Und am besten auch direkt im jpg Format.

Die Muhkuh 5. Nov 2005 19:43

Re: Jpg Screenshot von einem Fenster
 
Hi,

such mal hier im Forum nach Screenshot. Da wirst du 100% fündig ;)

ichbins 5. Nov 2005 19:45

Re: Jpg Screenshot von einem Fenster
 
Delphi-Quellcode:
uses [...] jpeg;

[...]

var
  b1,b2:tbitmap;
  j:tjpegimage;
begin
  b1:=tbitmap.Create;
  b1.width:=fensterbreite;
  b1.height:=fensterbreite;
  b1.canvas.handle:=GetWindowDC(Handle des Fensters, normalerweise form1.handle); // Desktop erfassen
  b2:=tbitmap.create;
  b2.width:=b1.width;
  b2.height:=b1.height;
  b2.Canvas.CopyRect(screen.desktoprect,b.Canvas,screen.desktoprect);
  j:=tjpegimage.create;
  j.assign(b2);
  j.savetofile('C:\Screen.jpg');

Neutral General 5. Nov 2005 20:22

Re: Jpg Screenshot von einem Fenster
 
Ok danke ich habs hinbekommen und jetzt will ich das bild direkt im Anschluss auf meinen FTP Server laden. Und das Bild ist 17KB groß und es dauert echte 5 Sekunden.. Das kann doch nicht sein oder?? Ohne das Hochladen dauert das ganze nur Millisekunden..

ichbins 6. Nov 2005 10:42

Re: Jpg Screenshot von einem Fenster
 
Mit j.compressionquality kannst du den Komprimierungsfaktor einstellen. 100 = maximale Qualität (=verlustfreie Komprimierung) | 2= maximale Komprimierung (minimale Qualität)

DGL-luke 6. Nov 2005 11:39

Re: Jpg Screenshot von einem Fenster
 
die 5 Sekunden sind durchaus realistisch zum verbinden, uploaden und disconnecten. Wenn du deine anwendung aktiv halten willst, musst du das hochladen wohl in eine thread auslagern.

Neutral General 6. Nov 2005 12:04

Re: Jpg Screenshot von einem Fenster
 
Die Compression habe ich schon auf 20 eingestellt. Und für 15-17KB 5 Sek mit DSL finde ich aber echt zu viel...

Die Muhkuh 6. Nov 2005 12:07

Re: Jpg Screenshot von einem Fenster
 
Hi,

ich würde beim Programmstart connecten und beim Programmbeenden wieder disconnecten. Vielleicht geht es dann schneller, weil du nicht immer connecten und disconnecten tust.

Neutral General 6. Nov 2005 12:41

Re: Jpg Screenshot von einem Fenster
 
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  IDFTP1.Host := 'ftp.geheim.de';
  IDFTP1.Username := 'Hans';
  IDFTP1.Password := 'kenntkeiner';
  IDFTP1.Passive := true;
  IDFTP1.Connect();
end;
Delphi-Quellcode:
procedure TForm1.IdFTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCountMax: Integer);
begin
 Loading := true;
end;
Delphi-Quellcode:
procedure TForm1.IdFTP1WorkEnd(Sender: TObject; AWorkMode: TWorkMode);
begin
  Loading := false;
end;
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
 if not Loading then LadeDateiHoch;
end;
und disconnectet wird eh wenn man das prog beendet xD

dizzy 6. Nov 2005 16:15

Re: Jpg Screenshot von einem Fenster
 
Zitat:

Zitat von ichbins
100 = maximale Qualität (=verlustfreie Komprimierung)

Stimmt so nicht. Auch bei max. Qualität wird das Original bei JPEG verändert. Die Abweichungen sind zwar minimal, und durch Rundungen u.U. nicht mehr im decodierten Bild nachweisbar (eher selten), aber nichtsdestotrotz ist das nicht verlustfrei.
Aber das nur am Rande... :balloon:


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