Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Sreenshot vom aktuellen Fenster? (https://www.delphipraxis.net/89506-sreenshot-vom-aktuellen-fenster.html)

smart 1. Apr 2007 13:04


Sreenshot vom aktuellen Fenster?
 
Hallo Alle!

Wie kann ich einen Sreenshot, immer vom aktuellen Fenster mit Delphi machen? Habe schon einige Codes getestet. Die machen meist vom ganzen Desktop einen Sreenshot. Hat Einer von Euch vielleicht ein Stück Code oder einen Tipp?

Gruß
Heike

fLaSh11 1. Apr 2007 13:08

Re: Sreenshot vom aktuellen Fenster?
 
Alt+Print

smart 1. Apr 2007 13:14

Re: Sreenshot vom aktuellen Fenster?
 
Zitat:

Zitat von fLaSh11
Alt+Print

Mit Delphi- Code! (siehe oben) ;-)

Gruß
Heike

fLaSh11 1. Apr 2007 13:16

Re: Sreenshot vom aktuellen Fenster?
 
wozu wenn Windows das Feature schon mitbringt^^?

smart 1. Apr 2007 13:21

Re: Sreenshot vom aktuellen Fenster?
 
Zitat:

Zitat von fLaSh11
wozu wenn Windows das Feature schon mitbringt^^?

Ich schreibe ein Programm, dass diese screenshots von Zeit zu Zeit automatisch macht und dann ein Archiv erstellt.

Gruß
Heike

DMW 1. Apr 2007 13:24

Re: Sreenshot vom aktuellen Fenster?
 
So etwas hatte ich mir mal gebastelt, allerdings mit C++Builder und GDI+. GDI+ verwendete ich allerdings hauptsächlich wegen der Formatunterstützung (.png), der für dich interessante Teil ist hauptsächlich GDI und sollte auch in Delphi praktikabel sein. Und auch für die GDI+ gibt es Delphi-Wrapper, im Zweifelsfall auch ein C-Interface.

Hier der Download:
http://www.audacia-software.de/pf/sst100.zip

Jelly 1. Apr 2007 13:27

Re: Sreenshot vom aktuellen Fenster?
 
Probiers mal so:

Delphi-Quellcode:
procedure WindowShot (var B : TBitmap) ;
var
  H : THandle ;
  R, RClient : TRect ;

begin
  H := GetActiveWindow ;

  if H <> 0 then begin
      GetWindowRect (H,R) ;
      B.Width := R.Right-R.Left ;
      B.Height := R.Bottom-R.Top ;
      BitBlt(B.Canvas.handle, 0,0 , B.Width, B.Height, GetDc(0), R.left, R.Top, SRCCOPY);
  end ;
end ;

bitsetter 1. Apr 2007 13:34

Re: Sreenshot vom aktuellen Fenster?
 
Hi,

bei
Delphi-Quellcode:
GetDc(0)
Delphi-Quellcode:
ReleaseDC()
bitte nicht vergessen.

smart 1. Apr 2007 14:18

Re: Sreenshot vom aktuellen Fenster?
 
Zitat:

Zitat von Jelly
Delphi-Quellcode:
procedure WindowShot (var B : TBitmap) ;
var
  H : THandle ;
  R, RClient : TRect ;

begin
  H := GetActiveWindow ;

  if H <> 0 then begin
      GetWindowRect (H,R) ;
      B.Width := R.Right-R.Left ;
      B.Height := R.Bottom-R.Top ;
      BitBlt(B.Canvas.handle, 0,0 , B.Width, B.Height, GetDc(0), R.left, R.Top, SRCCOPY);
  end ;
end ;

Vielen Dank!
Klappt schon, aber nur in der eigenen Anwendung. Sobald ich ein fremdes Fenster öffne geht es nicht mehr.

Gruß
Heike

Blackheart 1. Apr 2007 14:29

Re: Sreenshot vom aktuellen Fenster?
 
Alt+Print
Delphi-Quellcode:
keybd_event(VK_MENU , 0, 0, 0);
  keybd_event(VK_MENU , 0, KEYEVENTF_KEYUP, 0);
  keybd_event(VK_SNAPSHOT , 0, 0, 0);
  keybd_event(VK_SNAPSHOT , 0, KEYEVENTF_KEYUP, 0);

Jelly 1. Apr 2007 17:35

Re: Sreenshot vom aktuellen Fenster?
 
Zitat:

Zitat von smart
Klappt schon, aber nur in der eigenen Anwendung.

Neben GetActiveWindow gibts auch noch GetForeGroundWindow.

@Bistsetter: Klar. Hab ich vergessen dass man mit ReleaseDC auch alles wieder ordnungsgemäss freigeben sollte.

smart 2. Apr 2007 08:47

Re: Sreenshot vom aktuellen Fenster?
 
Zitat:

Zitat von Jelly
GetForeGroundWindow.

Ahh, jetzt aber. Hab vielen Dank für Deine Mühe!

Gruß
Heike


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