Seite 1 von 1
Screenshot machen und abspeichern
Verfasst: Donnerstag 13. Mai 2010, 23:25
von Bong-Jour
Hallo Leute, ich habe bereits versucht mit der Forumsuche etwas zu finden, aber es gelingt einfach nicht... Ich möchte gerne einen Screenshot machen und diesen abspeichern, um zu sehen was mein Programm macht, während ich nicht da bin

Für Text habe ich eine ganz simple Lösung gefunden:
Code: Alles auswählen
import win32clipboard, win32con
win32clipboard.OpenClipboard()
Text_aus_dem_Speicher = win32clipboard.GetClipboardData(win32con.CF_TEXT)
Kann mir jemand helfen ? An den Screenshot würde ich gerne über SendInput Drucktaste kommen und es dann einfach in eine Datei schreiben.
Re: Screenshot machen und abspeichern
Verfasst: Freitag 14. Mai 2010, 02:45
von noisefloor
Hallo,
das geht mit PIL, zumindest unter Windows (angeblich
Schau mal
hier, Posting Nr. 3. Doku dazu:
http://www.pythonware.com/library/pil/h ... gegrab.htm
Unter Python 2.6.5., Ubuntu 10.04, funktioniert es jedenfalls nicht.
Gruß, noisefloor
Re: Screenshot machen und abspeichern
Verfasst: Freitag 14. Mai 2010, 10:01
von Sr4l
http://www.python-forum.de/viewtopic.php?f=1&t=17798
Wie noisefloor schon sagte ImageGrab ist Teil von PIL.
Wenn du eine funktionierende Lösung für Linux brauchst musst du das Frog Module mal durchschauen.
Re: Screenshot machen und abspeichern
Verfasst: Samstag 15. Mai 2010, 03:45
von Bong-Jour
Hm... In meiner Vorstellung lies sich irgengwie alles in ein paar eigenen Zeilen realisieren.. Aber ich kriege es nicht mal gebacken einen simplen Buchstaben über SendInput zu verschicken oO
Weiß jemand, wie das geht ?
Code: Alles auswählen
ctypes.windll.user32.SendInput(nInputs, pInputs, cbSize)
SendInput(
__in UINT nInputs,
__in LPINPUT pInputs,
__in int cbSize
);
Parameters
nInputs [in]
UINT
Number of structures in the pInputs array.
pInputs [in]
LPINPUT
Pointer to an array of INPUT structures. Each structure represents an event to be inserted into the keyboard or mouse input stream.
cbSize [in]
int
Specifies the size, in bytes, of an INPUT structure. If cbSize is not the size of an INPUT structure, the function fails.
Re: Screenshot machen und abspeichern
Verfasst: Samstag 15. Mai 2010, 08:28
von mkesper
Ich würde nie versuchen, dem OS irgendwelche Tasten unterzujubeln, wenn es auch anders geht. Sobald nämlich z.B. ein anderssprachiges OS dahinterhängt, fällt sowas meist auf die Nase. Hast du denn PIL schonmal ausprobiert?
Re: Screenshot machen und abspeichern
Verfasst: Samstag 15. Mai 2010, 14:59
von Bong-Jour
Mein OS würde nie anderssprachig mit mir reden.. Wir kennen uns jetzt schon seit vielen Jahren =) PIL habe ich mir jetzt mal in der Hoffnung runtergeladen, herauszufinden wie der Typ das gemacht hat. Aber is ne Menge Code...
Re: Screenshot machen und abspeichern
Verfasst: Sonntag 16. Mai 2010, 21:30
von Sr4l
Es ist keine Schande externe Libs zu nutzen.
Re: Screenshot machen und abspeichern
Verfasst: Montag 17. Mai 2010, 09:35
von sma
In Java ist das plattformübergreifend ein Dreizeiler mittels `java.awt.Robot#createScreenCapture`. Gefummel mit externen Bibliotheken unnötig. Vielleicht einfach ein kleines Java-Programm aus Python heraus aufrufen?
Stefan
Re: Screenshot machen und abspeichern
Verfasst: Montag 17. Mai 2010, 14:43
von Dav1d
Oder Jython...
Re: Screenshot machen und abspeichern
Verfasst: Montag 17. Mai 2010, 17:29
von HerrHagen
sma hat geschrieben:In Java ist das plattformübergreifend ein Dreizeiler mittels `java.awt.Robot#createScreenCapture`. Gefummel mit externen Bibliotheken unnötig. Vielleicht einfach ein kleines Java-Programm aus Python heraus aufrufen?
Stefan
Ketzer! Hängt ihn!
Re: Screenshot machen und abspeichern
Verfasst: Dienstag 18. Mai 2010, 18:08
von Dav1d
Hab was gefunden, was die helfen könnte.
http://www.blog.pythonlibrary.org/2010/ ... -print-it/
Du brauchst dafür wxPython sonst nix

Re: Screenshot machen und abspeichern
Verfasst: Mittwoch 19. Mai 2010, 10:28
von mkesper
sma hat geschrieben:In Java ist das plattformübergreifend ein Dreizeiler mittels `java.awt.Robot#createScreenCapture`. Gefummel mit externen Bibliotheken unnötig. Vielleicht einfach ein kleines Java-Programm aus Python heraus aufrufen?

Stefan
Ja, in Python ist halt keine GUI mit integriert. (Und Tk zählt hier IMHO nicht, ist auch nicht auf jedem System standardmäßig dabei).
Re: Screenshot machen und abspeichern
Verfasst: Donnerstag 20. Mai 2010, 02:53
von Bong-Jour
Natürlich ist es keine Schande externe Libs zu nutzen.. Ich benutze ja auch ein Betriebssystem, ohne dass ich es selbst geschrieben hab

Allerdings scheint das ganze über den Aufruf einer simplen C Funktion möglich zu sein. Und das ärgert mich, dass ich das nich hinkriege..
Habe grade mal das Beispiel von
Dav!d überflogen. Das sieht super aus.
Dickes Danke!