Tastatursignale abfangen oder ist Java dafuer zu abstrakt?

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Anmerkung: Mein Problem bezieht sich auf die Windows-Families (Vorzugsweise WinXP) und ich hoffe, dass ist hier alles sehr verständlich, auch wenn das alles fachlich vlt. nicht so korrekt von mir dargestellt wird.

So, ich möchte ein Programm schreiben, welches bemerkt wenn ein Screenshot gemacht wurde. (Also als Windows-Default Alt Gr + Print) und dieses anschließend via. ftp oder http an einen Server transferiert.
Das Problem habe ich beim ersten Schritt, denke, dass das mit dem ftp/http nicht so das Problem wird.

Meine erster Ansatz war: Einfach in regelmäßigen Abständen die Zwischenablage prüfen.
Gucken ob da etwas halbwegs nach Bild aussieht (Bin mit der Semantik der Zwischenablage nicht vertraut, denn wenn da kein weiterer Eintrag wie z.B. Mime/types zu den gespeicherten Werten steht, müsste sich alles als Bild darstellen lassen (Da ja intern alles Binär ist und ich dass dann als Pic eines gewünschten Formats interpretieren lässt [hoffe es ist klar, was ich meine]) Nächster Schritt: Falls ich ein Bild, habe, dann wirds das irgendwie gehasht und der Hash wird in irgend eine Collection eingetragen (Details hier nicht wichtig). Wenn der Eintrag schon exisitiert wird es dabei belassen.
Falls nicht, wird das Bild dann an den Server übertragen.

Probleme:
-Unperformant, da in einem bestimmten Intervall immer wieder die Zwischenablage verarbeitet werden muss, auch wenn sich für mein Szenario nichts neues ergeben hat. Zudem kann es passieren, dass die Zwischenablage voll läuft, und bestehende Einträge überschrieben werden in denen ein neues Bild hätte sein können, bevor das Programm diese wieder neu auswertet. Das Hashen zur Versionierung der Bilder dürfte auch stark unperformant sein, insbesondere bei einer hohen Auflösung.
-Speicherbedarf wächst dynamisch, da die Einträge der "VersionierungsTabelle" ansteigen.
Dem könnte man sich abhelfen, wenn man eine Konstante größe einführt und die letzten Einträge gelöscht werden...
Das sollte aber auch so nicht so stark in´s Gewicht fallen

Zweiter Ansatz (Verfeinert). Ich registriere einen Listener, der mir bescheid gibt, wenn sich etwas in der Zwischenablage geändert hat. Alles andere bleibt beim alten, außer natürlich, dass das Programm nicht ständig die Zwichenablage ohne Grund selber prüfen muss.


Letzter und meiner Meinung nach bester Ansatz:

Mein Program ließt die Tastatursignale mit und liefert dann bei Alt Gr + Print eine entsprechende Ausnahme.
Zudem könnte ich das konstruieren des Screenshots mittels der Klasse Robot selbst vornehmen und könnte mir die ganze Sache mit der Zwischenablage sparen (Intern wird der Screenshot dann natürlich 2mal angefertig [System und einmal mein Programm] was aber unerheblich sein sollte). Auch die Versionierung würde kein Problem mehr darstellen,da ich die Sicherheit habe,dass das jetzige Screenshot das aktuelle ist.

Problem: Wie kann ich die Tastatureingaben mitlesen. Theoretisch sollte das OS ja Schnittstellen dazu bereit stellen.
Und wenn nicht, ist java nicht elementar genug in einer tiefen Instanz direkt mit dem Treiber (whatever) zu kommunizieren oder?

Wie funktionieren denn die herkömmlichen KeyListener, die man auf nen Gui pappen kann?
Das System schickt der JVM nen Signal, dass etwas und was gedrückt wurde und die JVM schaut nach welcher Listener dafür registriert wurde und wie diese dann damit umgehen soll? Wobei das System natürlich auch nur nen Signal schickt wenn die Gui-Elemente des Programms im Fokus des Benutzers liegen....
 

Wildcard

Top Contributor
Einen Hotkey kannst du ohne nativen Code nicht registrieren. Ausserdem stellt sich die Frage ob es über die Win API überhaupt möglich ist, da diese Kombination bereits vom OS abgefangen wird.
Der einzige Listener den du auf das Clipboard hängen kannst, ist ein Flavor Listener. Der ist allerdings dazu da, dir mitzuteilen wenn sich der Data Flavor ändert, nicht der Inhalt.
 

lhein

Top Contributor
Das waren noch Zeiten, als man mit Turbo Pascal IRQs unter DOS und Windows verbiegen konnte ;)
 
G

Guest

Gast
Mist, sowas dachte ich mir schon.
Den FlavorListener hatte ich ja in meinem 2. Ansatz angesprochen.

Ein neues Problem hat sich mir aufgetan, falls ich das über´s ClipBoard regeln muss.
Es werden dabei alle Bilder hochgeladen, die im ClipBoard hängen, also nicht nur die, für dich ich explizit einen Screenshot gemacht habe... :-(

Wobei: Es sollte doch möglich sein, immer den aktuellsten Eintrag im Clipborad zu beziehen.
Denn das machen ja alles Programme quasi auch mit den ich etwas aus der Zwischenablage via ctrl + v einfügen kann (Photoshop, Word...) Habe mich jetzt nicht direkt so in die Thematik eingelesen (Clipboard etc. ) aber mir sind fürs erste nur Methoden zum Filtern in´s Auge gesprungen... Also nach Typen....

Naja, wenn es wirklich nur nativ funzt, könnte man eine Hybridlösung einführen, aber da das ganze dann eh auf eine Plattform beschränkt ist, muss ich das wohl mit C versuchen...
Wie weit offen sind denn die WindowsSysteme? Wenigstens noch soweit, dass solche Schnittstellen, falls frei vorhanden auch öffentlich dokumentiert vorliegen? Oder muss man für den ganzen kack schon zahlen? Wenn ja, dann fällt das Projekt wohl in´s Wasser.
 

lhein

Top Contributor
Hatte auch erst nen 800XL, dann nen Mega-ST 4. Danach gings dann (grusel) zu 386 SX 33 ;)
 

Leroy42

Top Contributor
Naja, okay, da muß ich dann eben durch... ( :cool: )

(Irgendwie, siehst du jetzt anders aus;
kann mich ja auch irren...)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
CodingBerlin Mouse Clicks abfangen Allgemeine Java-Themen 4
X jvm exception abfangen und an externes Programm schicken Allgemeine Java-Themen 4
S equals-Methode bestimmer Klassen abfangen Allgemeine Java-Themen 2
E Exceptions abfangen und dann Programm stoppen - aber wie? Allgemeine Java-Themen 2
T Daten über port abfangen mit proxy server Allgemeine Java-Themen 12
M Swing java command line abfangen Allgemeine Java-Themen 8
C Swing Abfangen von Fehlern in GUI Allgemeine Java-Themen 4
R Threads Exceptions von Threads abfangen im ThreadPool Allgemeine Java-Themen 5
C Kopiervorgang abfangen Allgemeine Java-Themen 10
T Methoden In Konsole tasten abfangen? Allgemeine Java-Themen 4
B Windows Shutdown abfangen Allgemeine Java-Themen 10
O Input/Output CMD-Ausgabe abfangen und in Datei speichern Allgemeine Java-Themen 8
D Nullpointer abfangen Allgemeine Java-Themen 7
V JNI Call Crash verhindern (abfangen) Allgemeine Java-Themen 2
E JAVA URL abfangen und weiterleiten? Filter? Allgemeine Java-Themen 6
F Alle Exceptions abfangen Allgemeine Java-Themen 4
reibi NoClassDefFoundError abfangen Allgemeine Java-Themen 6
N BlueJ Abfangen vom Beenden Allgemeine Java-Themen 7
B Alle Exceptions auf einmal abfangen Allgemeine Java-Themen 4
B Exception wird geworfen, ich darf sie aber nicht abfangen. Allgemeine Java-Themen 10
P [SWT] Copy, Paste und Cut abfangen Allgemeine Java-Themen 6
T WeakHashMap: Wie "null" effizient abfangen? Allgemeine Java-Themen 5
R Loading-Thread und Exceptions abfangen. Allgemeine Java-Themen 4
I Das EOF (Ctrl + Z) abfangen Allgemeine Java-Themen 8
E programm im background tastendruck abfangen Allgemeine Java-Themen 4
H NullPointerException trotz Abfangen von null? Allgemeine Java-Themen 9
M Speichern von Word als Event abfangen Allgemeine Java-Themen 7
W Das schließen des JFrame abfangen, wiei? Allgemeine Java-Themen 6
P Nicht terminierende Methoden abfangen - timeout ? Allgemeine Java-Themen 3
reibi Aktion Taste gedrückt abfangen Allgemeine Java-Themen 9
G Bildschirmänderung abfangen? Allgemeine Java-Themen 4
J Method.invoke -> Exceptions der Funktion abfangen Allgemeine Java-Themen 5
B Fehlermeldung von dispatcher.forward abfangen Allgemeine Java-Themen 2
P CLAmp-Ausgaben abfangen Allgemeine Java-Themen 2
H Programmterminierung abfangen Allgemeine Java-Themen 4
R Alle Konsolenausgaben abfangen Allgemeine Java-Themen 8
G outOfMemoryError beim Einlesen einer Datei abfangen? Allgemeine Java-Themen 13
F Überlauf abfangen Allgemeine Java-Themen 1
J ToolTipText Event abfangen Allgemeine Java-Themen 5
M unterschiedliche Betriebssysteme abfangen Allgemeine Java-Themen 3
C LinkedList Exception abfangen Allgemeine Java-Themen 8
0 StackOverflow abfangen Allgemeine Java-Themen 15
M Runtime.getRuntime().exec() - Fehler abfangen Allgemeine Java-Themen 5
L Tastatureingaben abfangen Allgemeine Java-Themen 6
M err oder alle Exceptions eines Programms abfangen Allgemeine Java-Themen 4
theJavaMaschine Mitstreiter gesucht: Gemeinsam Java und Android Development lernen! Allgemeine Java-Themen 5
PARAS Karriereberatung benötigt: Wie kann ich ein Java Full Stack Entwickler werden? Allgemeine Java-Themen 7
P Java Access Bridge Allgemeine Java-Themen 5
W ICEpdf PDF-Dateien werden mit Java 21 nicht nicht mehr vollständig dargestellt Allgemeine Java-Themen 3
MiMa Grundsätzliche Frage zur Verwendung von Java Versionen?? Allgemeine Java-Themen 3
OnDemand Java Deployment Vaadin Allgemeine Java-Themen 3
D Hat Java eine Library um JavaScript auszuwerten? Allgemeine Java-Themen 2
Zrebna Wieso sind eigentlich JUnit-Tests in src/test/java platziert - nur Konvention? Allgemeine Java-Themen 7
N LlaMA, KI, java-llama.cpp Allgemeine Java-Themen 39
V Java-Codierungsherausforderung: Navigieren durch die Macken der Datumsmanipulation Allgemeine Java-Themen 2
E Output Fehler (Java-Programm Kuchen) Allgemeine Java-Themen 11
M java: unexpected type Allgemeine Java-Themen 2
harrytut Java Input/Output Tests Junit Allgemeine Java-Themen 3
B Java Discord bot auf ein Root Server? Allgemeine Java-Themen 1
BetziTheRealOne Java PKIX path building failed as non Admin Allgemeine Java-Themen 15
D Linux, Java-Version wird nicht erkannt bzw. welche Einstellung fehlt noch? Allgemeine Java-Themen 19
KonradN Java 21 Release Allgemeine Java-Themen 5
V Umgang mit fehlenden Daten in einer Java-Datenanalyseanwendung Allgemeine Java-Themen 5
P Fehler: Hauptklasse Main konnte nicht gefunden oder geladen werden Ursache: java.lang.ClassNotFoundException: Main Allgemeine Java-Themen 24
K Java Anwendung machen Anleitung Allgemeine Java-Themen 5
G java.io.listFiles() Allgemeine Java-Themen 3
8u3631984 Frage zu Java Streams min / max Allgemeine Java-Themen 17
S Java Programm lässt sich vom USB-Stick starten, aber nicht von HDD Allgemeine Java-Themen 16
K Java-Projekt Allgemeine Java-Themen 11
K Java-Projekt Allgemeine Java-Themen 0
ruutaiokwu Welcher Browser unterstützt heutzutage noch Java Applets? Allgemeine Java-Themen 5
Jose05 Java-Klasse im extra cmd-Fenster ausführen Allgemeine Java-Themen 3
rode45e Java Threads Allgemeine Java-Themen 4
G java.io.listFiles() Allgemeine Java-Themen 2
N Java Dynamic Proxy Allgemeine Java-Themen 3
N Leichte Java Gegner Ki Allgemeine Java-Themen 10
A Java modul Problem Allgemeine Java-Themen 4
Thomasneuling Java Jar datei erstellen, von Projekt, dass auch Javafx Dateien, FXML Dateien und CSS Dateien, sowie Bilder enthält? Allgemeine Java-Themen 14
V Funktionale Schnittstelle in Java Allgemeine Java-Themen 3
OnDemand Java String in Hashmap als Key NULL Allgemeine Java-Themen 27
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
berserkerdq2 Wenn ich bei Intelij javafx mit maven importieren will, muss ich das in die pom.xml reintun, aber warum noch in module-info.java? Allgemeine Java-Themen 3
KonradN Java 20 am 21. März Allgemeine Java-Themen 1
O Java Website Stock Bot Allgemeine Java-Themen 3
J Front-/Backend in Java Allgemeine Java-Themen 14
doopexxx JAVA Google Webcrawler Allgemeine Java-Themen 1
J JavaScript innerhalb eines Java Projekts ausführen Allgemeine Java-Themen 2
A Java Programm erstellen hilfe Allgemeine Java-Themen 10
G java.lang.NoClassDefFoundError: org/aspectj/lang/Signature Allgemeine Java-Themen 2
lalex1491 Java Aktienkurse nachfragen Allgemeine Java-Themen 4
J Class to link Java Allgemeine Java-Themen 4
V Wie funktioniert das Schlüsselwort "final" von Java? Allgemeine Java-Themen 19
mrStudent Inferenz JAVA Allgemeine Java-Themen 6
U URI Rechner (Java Script) Allgemeine Java-Themen 7
TheSkyRider Java Geburtsdatum Textfeld Allgemeine Java-Themen 7
mihe7 Java 19 JavaDocs: Browserintegration Allgemeine Java-Themen 1
Encera Gleichzeitiges Ausführen und verbinden von 2 Java-Klassen über die Eingabeaufforderung und Eclipse Allgemeine Java-Themen 21
H Java Rechner Programmierung der Mathematik Allgemeine Java-Themen 33
Lennox Schinkel Java Kara Auf einen Java Host laufen lassen Allgemeine Java-Themen 17
C Fußnoten von DocX mit Java Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben