Seite 1 von 1
Screenshot von Fenster
Verfasst: 13.01.2010 13:38
von DerProgrammierer78
Hallo liebe Forengemeinde,
Ich habe folgendes Problem ...
Ich habe die Seite
http://www.i2w.org/ und möchte mir einen Dienst programmieren, der von einer Liste von Webseiten Screenshots macht und diese abspeichert.
Dieser Dienst soll dann auf dem Server laufen und Screenshots mit einer Auflösung von 1024x768 machen, diese nach 160x120 verkleinern und in der Datenbank ablegen.
Geht das überhaupt?
Alternativ würde ich mir auf meinem Computer zuhause eine Software installieren, die das macht. Nur müsste die auch die Seiten laden und die Screenshots machen, wenn das Anwendungsfenster minimiert ist.
Und genau da sehe ich in beiden Fällen das Problem ... Man findet viele Codes, die Screenshots machen, aber keinen, der auch ein Bild von dem Inhalt eines minimierten Fensters macht.
Ich hatte schon überlegt das Browserfenster einfach per default aus dem sichtbaren Bereich raus zu verschieben und dann die Screenshots zu machen, aber dafür finde ich auch keinen Code...
Ein weiteres Problem sehe ich in der Überwachung, wann eine Seite fertig geladen ist. Aber da findet man sicher einige Codes für
Gruß
Frank
Re: Screenshot von Fenster
Verfasst: 13.01.2010 14:18
von Kaeru Gaman
ein Fenster, das minimiert oder außerhalb des Desktops ist, kann man nicht knipsen.
Re: Screenshot von Fenster
Verfasst: 13.01.2010 15:19
von Kiffi
DerProgrammierer78 hat geschrieben:Ich habe die Seite
http://www.i2w.org/ und möchte mir einen Dienst programmieren, der von einer Liste von Webseiten Screenshots macht und diese abspeichert.
bevor wir die Screenshot-Problematik lösen: hast Du denn auch überhaupt die
Möglichkeit, ein von Dir geschriebenes Programm auf diesem Server laufen zu lassen?
Grüße ... Kiffi
Re: Screenshot von Fenster
Verfasst: 14.01.2010 13:35
von super_castle
ein Fenster, das minimiert oder außerhalb des Desktops ist, kann man nicht knipsen.
Diese Aussage hat nur Gültigkeit für Purebasic.
Mit dem GFA32 für Windows kann ich vom "hdc2" jederzeit Fotos machen, ob ausserhalb des Fenster oder auch minimiert.
Re: Screenshot von Fenster
Verfasst: 14.01.2010 14:04
von c4s
super_castle hat geschrieben:
ein Fenster, das minimiert oder außerhalb des Desktops ist, kann man nicht knipsen.
Diese Aussage hat nur Gültigkeit für Purebasic.
Soweit ich weiß gibt es sowieso keinen internen PureBasic-Befehl der einen Screenshot von einem Fenster macht.
Also wie soll man jetzt deinen Beitrag verstehen?
super_castle hat geschrieben:Mit dem GFA32 für Windows kann ich vom "hdc2" jederzeit Fotos machen, ob ausserhalb des Fenster oder auch minimiert.
Und was hat es damit auf sich?
Also um dich zu korrigieren: Man kann sehr wohl in PureBasic Screenshots von nicht sichtbaren Fenstern machen. Hierzu einfach mal "user32.dll" -> "PrintWindow" anschauen (ist als Api-Befehl noch nicht eingebaut).
Re: Screenshot von Fenster
Verfasst: 14.01.2010 14:29
von Kaeru Gaman
o_O"
ich war davon ausgegangen, dass die Bildinformation von einem nicht aufgebauten Fenster garnicht vorhanden ist.
wieso soll Windows eine Bitmap erzeugen, wenn sie nicht angezeigt werden muss?
... oder macht die PrintWindow-Funktion das extra für sich?
Re: Screenshot von Fenster
Verfasst: 14.01.2010 14:55
von Kiffi
ich habe mal kurz was zusammengezimmert (teilweise geklauter Code):
Code: Alles auswählen
EnableExplicit
UsePNGImageEncoder()
Procedure SavePicture(Handle, Filename.s)
Protected cr.RECT
Protected hdc
GetClientRect_(Handle, @cr)
CreateImage(0, cr\right-cr\left, cr\bottom-cr\top, 24)
SendMessage_(Handle, #WM_PRINT, StartDrawing(ImageOutput(0)), #PRF_CLIENT | #PRF_CHILDREN | #PRF_ERASEBKGND)
StopDrawing()
ProcedureReturn SaveImage(0, Filename, #PB_ImagePlugin_PNG)
EndProcedure
#Window = 0
#WebGadget = 0
OpenWindow(#Window, 0, 0, 600, 300, "WebGadget", #PB_Window_Invisible)
WebGadget (#WebGadget, 0, 0, 600, 300, "http://www.purebasic.com")
Repeat
While WindowEvent() : Delay(1) : Wend
Until GetGadgetAttribute(#WebGadget, #PB_Web_Busy)=0
If SavePicture(GadgetID(#WebGadget), "C:\WG_Screenshot.png")
RunProgram("c:\WG_Screenshot.png")
Else
MessageRequester("Hinweis", "Screenshot konnte nicht erstellt werden")
EndIf
Um es kurz zu machen: Sowohl #PB_Window_Invisible als auch
#PB_Window_Minimize sind mögliche Parameter. In beiden Fällen
wird ein Screenshot generiert.
Grüße ... Kiffi
Re: Screenshot von Fenster
Verfasst: 14.01.2010 16:18
von c4s
Sonst einfach mal bei msdn vorbei gucken:
http://msdn.microsoft.com/en-us/library ... 85%29.aspx
Habe aber gerade festgestellt, dass Kiffis Lösung anscheinend genau dasselbe bewirkt. Obwohl ich mich dunkel daran erinnere im englischen Forum etwas über Probleme mit SendMessage(#WM_PAINT) gelesen zu haben.
Bei beiden Codes besteht halt das Problem, dass von der Website nur in Fenstergröße ein Screenshot gemacht wird.
Re: Screenshot von Fenster
Verfasst: 02.01.2013 22:11
von DerProgrammierer78
Hallo zusammen ...
Ich bin heute mal wieder über diesen Code gestolpert, den man mir hier vor Jahren gepostet hatte und stellte fest, dass er einen Nachteil hat.
Ich würde gerne automatisiert Screenshots von Facebook-Seiten und Facebook-Spielen machen für meine Seite
http://www.facebook-spiele.de/ .
Leider bleiben die Screenshots von Facebook immer leer (Nur rein Weiss) und auch nach langem suchen bei Gooogle wurde ich nicht fündig.
Hat hier jemand eine Idee?
Re: Screenshot von Fenster
Verfasst: 07.01.2013 00:57
von Delle
DerProgrammierer78 hat geschrieben:Leider bleiben die Screenshots von Facebook immer leer (Nur rein Weiss) und auch nach langem suchen bei Gooogle wurde ich nicht fündig.
Auf einem minimierten Fenster wird manchmal kein Inhalt ausgegeben, erst wieder wenn das Fenster aktiv und "sichtbar" ist.
FB macht ja heavy Gebrauch von JavaScript und da kann man das wohl abfragen ....