Eingegebenen Text wiederholt schreiben lassen

_user_q

Aktives Mitglied
Robot ist mir bekannt, aber ich habe vor, dass der eingegebene Text nicht Buchstabe für Buchstabe getippt wird, sondern sofort eingefügt wird. Auch fiele mir da Paste from Clipboard ein, aber gibt es auch eine andere Möglichkeit, das Problem zu lösen? Denn der Nachteil ist der, dass wenn man währenddessen etwas anderes kopiert, dass dann der neue Text o. Ä. aus der Zwischenablage eingefügt wird.

Wie folgt soll es nicht aussehen (Eingegebener Text = Test):
T
e
s
t
T
e
s
t

Wie folgt soll es aussehen:
Test
Test

Danke!
 

KonradN

Super-Moderator
Mitarbeiter
Dem TE geht es um die Steuerung anderer Applikationen aus einer Java Anwendung heraus - so habe ich zumindest seine früheren Threads in Erinnerung.

Auch fiele mir da Paste from Clipboard ein, aber gibt es auch eine andere Möglichkeit, das Problem zu lösen? Denn der Nachteil ist der, dass wenn man währenddessen etwas anderes kopiert, dass dann der neue Text o. Ä. aus der Zwischenablage eingefügt wird.
Generell ist es sehr schlecht, wenn neben einem Robot auch noch ein User gleichzeitig an einem Rechner arbeitet. Das schreit so oder so nach Problemen.

Aber das Problem mit der Zwischenablage lässt sich sehr gut minimieren:
  • Du musst die ursprüngliche Zwischenablage erst einmal sichern.
  • Dann setzt Du die Zwischenablage und fügst die ein, wo Du das möchtst.
  • Dann setzt Du die Zwischenablage wieder zurück
Das geht so fix, dass die Wahrscheinlichkeit von Kollisionen nicht zu hoch ist. (Hängt natürlich auch davon ab wie oft das gemacht wird bzw. wie aktiv der User ist.)

Die direkte Steuerung einer Applikation geht aber auch. Das habe ich in der Vergangenheit schon gemacht, aber mit C# und nicht mit Java (und das war schon heftig genug. Da kommen dann auch so Spielereien wie Speicherschutz bei Prozessen ins Spiel!).

Da müsste man also schauen, was Du genau machen willst. Welche Applikation willst Du steuern? Ganz universell geht das nicht.

Wenn es eine native Applikation unter Windows ist, dann könnte man schauen, was man für Nachrichten an die Fenster schicken kann. Einfache Dinge gehen bestimmt per JNI - also Fenster finden und so.

Wenn es eine Web-Applikation ist, dann wäre ggf. denkbar, das innerhalb der Java Anwendung laufen zu lassen. Dann wäre es ggf. möglich, hier eigene JavaScripts laufen zu lassen, die die Modifikationen für Dich machen. Oder wenn es im Browser sein muss, dann könnte man schauen, ob man da mit UserScripts eine Schnittstelle schaffen kann. (Das wäre aber dann halt im Prinzip eine JavaScript Lösung und keine Java Lösung.)
 

_user_q

Aktives Mitglied
Dem TE geht es um die Steuerung anderer Applikationen aus einer Java Anwendung heraus - so habe ich zumindest seine früheren Threads in Erinnerung.


Generell ist es sehr schlecht, wenn neben einem Robot auch noch ein User gleichzeitig an einem Rechner arbeitet. Das schreit so oder so nach Problemen.

Aber das Problem mit der Zwischenablage lässt sich sehr gut minimieren:
  • Du musst die ursprüngliche Zwischenablage erst einmal sichern.
  • Dann setzt Du die Zwischenablage und fügst die ein, wo Du das möchtst.
  • Dann setzt Du die Zwischenablage wieder zurück
Das geht so fix, dass die Wahrscheinlichkeit von Kollisionen nicht zu hoch ist. (Hängt natürlich auch davon ab wie oft das gemacht wird bzw. wie aktiv der User ist.)

Die direkte Steuerung einer Applikation geht aber auch. Das habe ich in der Vergangenheit schon gemacht, aber mit C# und nicht mit Java (und das war schon heftig genug. Da kommen dann auch so Spielereien wie Speicherschutz bei Prozessen ins Spiel!).

Da müsste man also schauen, was Du genau machen willst. Welche Applikation willst Du steuern? Ganz universell geht das nicht.

Wenn es eine native Applikation unter Windows ist, dann könnte man schauen, was man für Nachrichten an die Fenster schicken kann. Einfache Dinge gehen bestimmt per JNI - also Fenster finden und so.

Wenn es eine Web-Applikation ist, dann wäre ggf. denkbar, das innerhalb der Java Anwendung laufen zu lassen. Dann wäre es ggf. möglich, hier eigene JavaScripts laufen zu lassen, die die Modifikationen für Dich machen. Oder wenn es im Browser sein muss, dann könnte man schauen, ob man da mit UserScripts eine Schnittstelle schaffen kann. (Das wäre aber dann halt im Prinzip eine JavaScript Lösung und keine Java Lösung.)
Dann wird mich das hier wahrscheinlich nicht wirklich zum Ziel bringen (oder?). Wenn die Zwischenablage (wie bei KeePass[XC]) gesichert ist, wenn man die Log-in-Daten in die Zwischenablage kopieren lässt, muss ja was anderes geschehen, als dass der Text offensichtlich in der Zwischenablage abgelegt wird, doch ich weiß leider nicht, wie. Und soll das dann wirklich mit
Java:
robot.keyPress(VK_CONTROL);
robot.keyPress(VK_V);
eingefügt werden?
Und wie funktioniere das Zurücksetzen der Zwischenablage, ohne dass alle anderen kopierten Dinge verschwinden (ebenfalls wie bei KeePass[XC])?
 

KonradN

Super-Moderator
Mitarbeiter
Ich habe gerade Probleme, dich zu verstehen. Was ist genau Dein Problem?

Der Link von Dir zeigt ja erst einmal, wie man etwas in die Zwischenablage packen kann. Das ist ja ein Teil von dem, was Du brauchst.

Was meinst Du mit "Zwischenablage gesichert"? Ich habe keine Ahnung, was da KeePass machen könnte, auf das Du anspielst. Meines Wissens wird da die Zwischenablage einfach gesetzt ... es läuft maximal ein Timer, so dass die Zwischenablage nach kurzer Zeit erneut gesetzt wird, so dass das Passwort da nur kurze Zeit in der Zwischenablage ist.

Das Sichern der vorherigen Zwischenablage dürfte einfach sein. Clipboard hat die Methode getContents. Das gibt dir den Inhalt oder null. Der Parameter wird nicht verwendet, so dass Du da einfach null angeben kannst.

Das Zurückschreiben geht mit setContents.
 

_user_q

Aktives Mitglied
Ich habe gerade Probleme, dich zu verstehen. Was ist genau Dein Problem?

Der Link von Dir zeigt ja erst einmal, wie man etwas in die Zwischenablage packen kann. Das ist ja ein Teil von dem, was Du brauchst.

Was meinst Du mit "Zwischenablage gesichert"? Ich habe keine Ahnung, was da KeePass machen könnte, auf das Du anspielst. Meines Wissens wird da die Zwischenablage einfach gesetzt ... es läuft maximal ein Timer, so dass die Zwischenablage nach kurzer Zeit erneut gesetzt wird, so dass das Passwort da nur kurze Zeit in der Zwischenablage ist.

Das Sichern der vorherigen Zwischenablage dürfte einfach sein. Clipboard hat die Methode getContents. Das gibt dir den Inhalt oder null. Der Parameter wird nicht verwendet, so dass Du da einfach null angeben kannst.

Das Zurückschreiben geht mit setContents.
Mit Clipboard.getSystemClipboard().clear(); bzw. .setContent(null); setze ich die Zwischenablage zurück. Der Verlauf wird ja nicht dadurch geleert.
Eigentlich hatte ich vor, dass der Text in die Zwischenablage kopiert wird, ohne dass es im Verlauf mit drin steht, so wie bei KeePass[XC].

  • Du musst die ursprüngliche Zwischenablage erst einmal sichern.
Was passiert denn, wenn ich das mache und wie mache ich das?
 

KonradN

Super-Moderator
Mitarbeiter
Ok, ich habe jetzt einmal recherchiert, was Du meintest: Windows hat eine History vom Clipboard. Das wird von Java selbst so aber nicht unterstützt und daher hast Du rein aus Java da erst einmal keinen Zugriff drauf.

Und selbst unter Windows scheint es dafür keine win32 API für zu geben. In UWP Libraries gibt es da wohl Möglichkeiten.

Daher ist das etwas, bei dem ich erst einmal nicht helfen kann. Evtl. kann man schauen, wie das KeePass macht um dann den Part per JNI zugreifbar zu machen. Aber so aus Java sehe zumindest ich keine einfache Möglichkeit.
 
Y

yfons123

Gast
keepass macht das auf zwei wege
1. setz clipboard auf passwort
2. setz clipboard auf "" nach 12 sekunden
wenn du die windows clipboard historie hast dann wird das passwort auch da permanent gespeichert von keepass also das hat das gleiche problem

die zweite methode die keepass nutzt ist mit obfuscation
das ist auch erklärt wie das funktioniert
 

_user_q

Aktives Mitglied
Ok, ich habe jetzt einmal recherchiert, was Du meintest: Windows hat eine History vom Clipboard. Das wird von Java selbst so aber nicht unterstützt und daher hast Du rein aus Java da erst einmal keinen Zugriff drauf.

Und selbst unter Windows scheint es dafür keine win32 API für zu geben. In UWP Libraries gibt es da wohl Möglichkeiten.

Daher ist das etwas, bei dem ich erst einmal nicht helfen kann. Evtl. kann man schauen, wie das KeePass macht um dann den Part per JNI zugreifbar zu machen. Aber so aus Java sehe zumindest ich keine einfache Möglichkeit.
Ich habe einfach mal nur weitergemacht und gemerkt, dass durch das Programm während des Ablaufs nichts im Verlauf der Zwischenablage gespeichert wird und am Ende immer noch der letzte Wert des Verlaufs verwendet werden kann. Das Programm hat quasi seine eigene Zwischenablage. Ich kann nämlich währenddessen mit Strg + V den letzten Wert des Verlaufs einfügen, aber es behindert nicht das Programm, das hat weiterhin seine "eigene" Zwischenablage. 🤔
Folgender Code wird nur 1-mal vor dem Programmstart ausgeführt:
Java:
            Platform.runLater(() -> {
                Clipboard.getSystemClipboard().clear();
                Clipboard.getSystemClipboard().setContent(inputClipboardContent);
            });
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
_user_q Eingegebenen Text Zeile für Zeile ausgeben lassen Allgemeine Java-Themen 11
cedi Eingegebenen Text in der Konsole nicht sichtbar machen oder nur in Sternchen anzeigen Allgemeine Java-Themen 2
Y ArrayListe eingegebenen index entfernen Allgemeine Java-Themen 1
O Text aus einer Textdatei rausholen, der zwischen zwei Schlüsselworten steht Allgemeine Java-Themen 4
K Bildschirm auslesen/ Text erkennen Allgemeine Java-Themen 5
berserkerdq2 Text über einen Shape anzeigen (Scenebuilder) Allgemeine Java-Themen 1
M Thymeleaf th value und th text Allgemeine Java-Themen 1
G Darstellung von Text auf MapContext von GeoTools Allgemeine Java-Themen 2
Alex_99 Programm stürzt beim Aufruf der Funktion ab? Text ausgeben Allgemeine Java-Themen 45
Mozart53 JLabel nur meinen Text verschieben ohne Image Allgemeine Java-Themen 3
izoards Bestimmter Text aus PDF extrahieren Allgemeine Java-Themen 3
B Scanner erkennt keinen Text in Textdatei, obwohl welcher drinsteht Allgemeine Java-Themen 10
K HTMLEditor HTML Text in Rich Text umwandeln Allgemeine Java-Themen 14
kodela JDialog zeigt Text nicht an Allgemeine Java-Themen 5
L Text filtern Allgemeine Java-Themen 1
Bluedaishi TEXT Kodierung Allgemeine Java-Themen 3
J Die Letzte Zahl aus einer Text datei lesen Allgemeine Java-Themen 8
S Ini Text aus String parsen Allgemeine Java-Themen 1
M itext - Button der Text in Zwischenablage stellt Allgemeine Java-Themen 0
E CSV mit Text und Binärdaten auslesen Allgemeine Java-Themen 7
FRI3ND Datentypen Date-Array sortieren - Text mitnehmen? Allgemeine Java-Themen 7
I Text suchen und ersetzen im Word Dokument Allgemeine Java-Themen 3
windl Text mining / deep learning Allgemeine Java-Themen 0
I Text aus Input-Box entnehmen und zuweisen Allgemeine Java-Themen 1
KeexZDeveoper Text Mining Allgemeine Java-Themen 3
L Input/Output Wie kann man in der Konsole einen Text farbig ausgeben z.b in grün Allgemeine Java-Themen 6
B Arrays mit Text und Zahlen füllen Allgemeine Java-Themen 3
A Datenexport (Text und Draw) Allgemeine Java-Themen 1
L Text von txt auf JTextArea Allgemeine Java-Themen 4
N Das Ende von bestimmten zeilen in text datei ändern und speichern Allgemeine Java-Themen 3
A 2D-Grafik Text in ein Bild schreiben Allgemeine Java-Themen 11
T Textarea text wird immer überschrieben Allgemeine Java-Themen 4
I Apache POI Word Text einfügen Allgemeine Java-Themen 26
T itext: text in ein textfeld hinzufügen Allgemeine Java-Themen 2
B Farbiger Text in der Konsole Allgemeine Java-Themen 1
K Pdf mit dynamischem Text mit iText Allgemeine Java-Themen 0
D Text Analyzer Allgemeine Java-Themen 2
RalleYTN Audiodatein(.ogg/.wav) in Text konvertieren Allgemeine Java-Themen 0
L Nach Button drücken den Text festspeichern Allgemeine Java-Themen 9
X Löschen von einer Zeile in einer Text Datei. Klappt nicht. Allgemeine Java-Themen 4
J Text lesen und in Variablen speichern Allgemeine Java-Themen 3
S Text in mehreren Sprachen korrekt darstellen? Wie waehle ich die Fonts aus..? Allgemeine Java-Themen 0
J Java - Zeile aus Text datei löschen Allgemeine Java-Themen 13
M Text in erstelltes Excelfile schreiben Allgemeine Java-Themen 6
N Input/Output Website Text auslesen und bestimmte Zeilen wiedergeben Allgemeine Java-Themen 4
W Arraylist Text Suchen und Datei löschen Allgemeine Java-Themen 5
P HTML Text bearbeiten Allgemeine Java-Themen 1
B JFrame Text Ausgabe Allgemeine Java-Themen 7
G Makierter Text in Arbeitsspeicher Allgemeine Java-Themen 2
B Text in die Mitte der Konsole schreiben. Allgemeine Java-Themen 1
M Variablen Variablen in Text einbinden Allgemeine Java-Themen 5
P iText Text zentrieren Allgemeine Java-Themen 3
J Verschlüsselung von Text? Allgemeine Java-Themen 2
M Text datei in java jar datei einbinden Allgemeine Java-Themen 4
S Swing Text in eine JTextArea schreiben Allgemeine Java-Themen 17
M Verschlüsselung von Text und Files durch RSA (Encoding Problem) Allgemeine Java-Themen 7
S Robuste Methode um Text von HTML code zu extrahieren..? Allgemeine Java-Themen 6
achillesat Rich Text Editor Allgemeine Java-Themen 2
M CMD-Text anzeigen Allgemeine Java-Themen 10
G Text Mining Allgemeine Java-Themen 7
B Text auf Standarddrucker drucken Allgemeine Java-Themen 3
S Library fuer Internet-Text-Daten-Quellen..? Allgemeine Java-Themen 8
nrg Find and replace Text docx Allgemeine Java-Themen 6
M Ein bestimmtes Wort in einem Text zählen (String in String) Allgemeine Java-Themen 9
S Text in for Schleife in Label einfügen Allgemeine Java-Themen 4
M Funktion gesucht: Text vektorisieren Allgemeine Java-Themen 20
D Wort in Text mit >100.000 Wörter finden Allgemeine Java-Themen 7
B Text wird nicht richtig angezeigt Allgemeine Java-Themen 9
Q Text Datei einlesen Allgemeine Java-Themen 27
N .doc text ändern Allgemeine Java-Themen 12
R Komponente hat nicht die gesetzten Eingeschaften (Text, Farbe) Allgemeine Java-Themen 3
M NOA an den Source Text des Dokumentes kommen Allgemeine Java-Themen 7
A Text via RegEx durchsuchen und teile ersetzten Allgemeine Java-Themen 5
O Text mit Wildcard gegen regulären Ausdruck prüfen Allgemeine Java-Themen 3
A Umwandlung von Text/Zeichen in Polynome Allgemeine Java-Themen 8
Y Eclipse ppt Folie erzeugen + text plazieren Allgemeine Java-Themen 4
D markierten Text kopieren Allgemeine Java-Themen 2
P Doppeltverkettete Listen + Text Allgemeine Java-Themen 5
DEvent embedded Object Database in Text Format Allgemeine Java-Themen 5
C Datei als ASCII text einlesen ? Allgemeine Java-Themen 16
R Texterkennung - Text aus einem/r Bild/Grafik auslesen Allgemeine Java-Themen 2
M String in Html Text umwandeln Allgemeine Java-Themen 2
T eingefügter Text nach dem rendern spiegelverkehrt Allgemeine Java-Themen 2
lumo encoding einer text-datei Allgemeine Java-Themen 2
E Text ans Ende einer Textdatei anfügen Allgemeine Java-Themen 2
E JTextArea / JEditorPane + Text formatieren Allgemeine Java-Themen 3
R Java Text anderer Schriftart einlesen Allgemeine Java-Themen 2
A AES Key aus Text erzeugen Allgemeine Java-Themen 2
S Koordinaten aus einem Text filtern Allgemeine Java-Themen 11
turmaline Text aus Web-Seiten auslesen Allgemeine Java-Themen 1
MQue Graphics2D Text Allgemeine Java-Themen 2
U Text verschmelzen Allgemeine Java-Themen 8
martin82 Java-Code aus Text-Datei parsen Allgemeine Java-Themen 3
W Text curser auswählen für Paste Allgemeine Java-Themen 15
G HTML-Datei einlesen, Plain Text in Textfile speichern Allgemeine Java-Themen 4
S Bestes Text file encoding..? Allgemeine Java-Themen 36
B UTF-8 Text Allgemeine Java-Themen 3
H Passwortgschützter Text Allgemeine Java-Themen 13
C IReport Feldberechnen und als Text ausgeben Allgemeine Java-Themen 4
D Bild in text tabelle umwandeln Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben