Screenshots inaktiver Applikationen erstellen

Status
Nicht offen für weitere Antworten.

frisk

Mitglied
Hallo zusammen,

Ich habe bereits gegoogelt und in diesem Forum gesucht, aber leider keine zufriedenstellende Antwort gefunden. Deshalb stelle ich meine Frage hier zur Diskussion :bahnhof:

Wie viele wohl wissen, kann man mit der schönen Robot Klasse viel Blödsinn anstellen und unter anderem auch Screenshots aufzeichnen. Mein Problem besteht darin, dass die besagte Methode wortwörtlich einen Screenshot meines "Bildschirms" aufnimmt.

Ich möchte gerne Screenshots einer ganz bestimmten Applikation, genauer gesagt eines Fensters machen, bestmöglich auch nur einen bestimmen Bereich dieses Fensters aufnehmen. Quasi createScreenCapture(String fensterName, int breite, int hoehe). Weil das noch nicht zuviel verlangt ist, sollte es natürlich auch möglich sein, das auf ein nicht aktives Fenster (eins im Hintergund) anzuwenden.

Meine Frage ist ob jemand sowas bereits versucht hat, es dazu möglicherweise öffentliche Libraries gibt oder sonst jemand eine Idee hätte, wie ich das Thema angehen kann.

Eine Möglichkeit die ich bereits versucht habe, ist, per JNI eine C-DLL aufzurufen, die den Screenshot für mich erstellt. Somit kann ich zumindest bestimmte Fenster und erfolgreich Bereiche fotographieren. wählen. Allerdings hat dies 3 Probleme (1. an Windows gebunden und 2. irgendwie buggy, teilweise schwarze Screenshots. 3. Kenne mich mit C nicht wirklich aus, was wohl auch der Grund für 2. ist :( ).

Vielen Dank im voraus für eure Hilfe.
Frisk
 

slawaweis

Bekanntes Mitglied
Hallo frisk,

da die JVM nur auf die Fenster zugreifen kann, die über diese JVM erzeugt wurden, ist es unmöglich beliebige Fenster auf dem Desktop als Screenshots abzuspeichern. Man kann natürlich den gesamten Desktop aufnehmen und dann rausschneiden, aber automatisch geht es nicht.

Eine Möglichkeit das mit Java zu bewerkstelligen wäre Runtime.getRuntime().exec(). Dazu muss man nur für jede Plattform ein Kommandozeilentool finden, welches Screenshots über Parameter beim Aufruf macht und diese irgendwo ablegt. Diese Tools muss man dann entweder dem Programm beilegen oder als Voraussetzung für die Ausführung machen. Wird ein Tool nicht gefunden, gibt es eine Fehlermeldung. Auf diese weise habe ich Java RAR beigebracht :D

Slawa
 

frisk

Mitglied
Vielen Dank euch beiden für die Antworten.

An sich habe ich ja den Code schon in C, aber weiß da ja nicht genau ob er tatsächlich immer so funktioniert wie er soll.
Hatte mal versucht das Ganze mit JNative nachzubauen, aber dann aufgegeben, weil es mein Betriebssystem (64bit) nicht unterstützt.

Ergo habe ich auch gar nicht mehr an jna gedacht, da ich mich hier nur an 32bit Versionen erinnern konnte. Aber da gibt es mittlerweile eine 64bit Versionen von. Vielen Dank für den Hinweis :)

Dann werde ich doch mal demnächst rumspielen und versuchen mir was schönes zu basteln. Sollte es hinhauen, poste ich den Code hier.

Grüße,
Frisk
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben