# Mit Java in einem anderes Programm eingreifen



## centrax (27. Apr 2011)

Hallo Forum,

nachdem der Titel des Threads eher nichtssagend ist, hier mein konkrets Szenario.

Ich habe ein anderes Programm (z.B. Firefox Webbrowser) und möchte auf einen (hier: HTML)-Text, den das Programm gerade nach Außen darstellt, zugreifen.
Ich brauche diesen Text als String für die eigene Weiterverarbeitung.

Das Problem ist: Das ganz kann nicht einfach vom Benutzer über Strg+c & Strg+V in ne GUI kopiert und dann eingelesen werden, denn das Programm muss "automatisch" arbeiten.


Ist das mit Java IRGENDWIE möglich?
Könnte ich zum Beispiel mit einem Firefox-Plugin auf mein Java-Programmm zugreifen, und ihm so den aus dem Firefox gelesenen String einfüttern?
Denn ich möchte nur sehr ungern auf alternative Sprachen ausweichen - Java ist bisher bei mir sehr stabil, zuverlässig und sicher gelaufen (und plattformunabhängig!).


Ich freue mich über jede Antwort!

Liebe Grüße,
centrax


----------



## Atze (27. Apr 2011)

hallo centrax 

also wenn das programm keine schnittstelle anbietet seinen aktuellen inhalt "weiterzugeben" siehts da schlecht aus. IRGENDWIE gehen wird das schon, im schlimmsten falle nen screenshot machen und mit ocr einlesen, aber ob das zielführend ist weiß ich nicht? aber muss es denn über das programm passieren? wenn du eine webseite verarbeiten willst, geht das ohne browser auch bspw mit dem HttpClient - HttpComponents HttpClient Overview


----------



## centrax (27. Apr 2011)

Danke für die Antwort,

das mit dem HttpClient klingt gut, aber ich muss irgendwie verarbeiten, was der Nutzer gerade startet.
Wäre es möglich, dass ich einen markierten Text als File speichere, und dann in Java einlese?

Kreative Vorschläge benötigt....

lg


----------



## Gelöschtes Mitglied 9001 (27. Apr 2011)

Hilft Dir die Systemzwischenablage vielleicht weiter? Theoretisch kann eine Java-Applikation horchen, ob der Anwender da etwas abgelegt hat.


----------



## Asgar13 (27. Apr 2011)

", dass ich einen markierten Text als File speichere, und dann in Java einlese?"

-> Würde auch mal sagen, so geht das Einlesen in Java:


```
try{		          		
		String atftp[]={"/bin/sh", "-c", "file.txt"};
		Process d = Runtime.getRuntime().exec(atftp);
		BufferedReader is = new BufferedReader( new InputStreamReader((d.getInputStream())));
                for (String pingbuffer;(pingbuffer = is.readLine()) != null;
                liste.add(pingbuffer));
		is.close();
		
	}
	catch(IOException ioexp){
	hostuserip.setText("Fehler bei dem IOExecption");
	}
	catch(Exception exp){
	hostuserip.setText("Fehler bei dem Execption.");
	}
```

Zum Auslesen der Datei.
Auszutauschen sind:
1. /bin/sh (gilt nur für Linux, nicht für Windows)
2.file.txt (Der Text/log-file deiner Datei)
3.liste.add(deine Liste oder ein System.out.println eintragen)


----------



## centrax (27. Apr 2011)

Danke für die Tips.

Könnte ich dann (auf Firefox bezogen) ein Plugin machen, dass einen Text in die Zwischenablage schmeißt?
Könnte dann meine Java-Applikation merken (nach dem Listener-Prinzip), dass etwas in die Zwischenablage gepackt wurde, und diesen Text herausnehmen und verarbeiten?


Das Problem an dem Prinzip mit dem Dateieinlesen ist: Meine Applikation muss wissen, wann sie die entsprechende Datei einlesen soll. Also muss man ihr das klar machen. Wenn sie auf Einfügen in die Systemzwischenablage reagieren kann, können die beiden Programme miteinander kommunizieren.

Ist das so clever?


----------



## madboy (27. Apr 2011)

Du könntest dir einen Proxy schreiben, den in Firefox eintragen und vom Proxy die Verarbeitung machen lassen:
Firefox <-> Proxy <-> Netzwerk

Oder auch einen Proxy suchen, der in eine Datei loggen kann und dann die Datei lesen (z.B. mit netcat netcat as a logging tcp proxy  A random weblog but it’s mine)


----------



## centrax (27. Apr 2011)

Die Idee klingt ganz gut, aber ich habe soetwas noch nie gemacht...
Habe also keinerlei Vorkenntnisse.


----------



## madboy (27. Apr 2011)

centrax hat gesagt.:


> Die Idee klingt ganz gut, aber ich habe soetwas noch nie gemacht...
> Habe also keinerlei Vorkenntnisse.



Das hatte ich auch nicht erwartet. Aber für mich klingt es einfacher (und vor allem zuverlässiger), als ein Firefox-Plugin zu schreiben, dann noch ein Java-Programm und die beiden über die Zwischenablage zu synchronisieren. Was passiert, wenn du nebenher manuell was kopierst? Dann versucht dein Programm die Zwischenablage zu lesen und wird Fehler produzieren ;-)

Wenn du konkrete Fragen hast, wird dir hier bestimmt jemand helfen. Dazu wäre aber das Betriebssystem wichtig falls du nicht selber nen Proxy schreiben willst.

Da fällt mir noch ein: statt einem Proxy könnte auch ein Netzwerksniffer (wie z.B. tcpflow) helfen. Sniffer anwerfen, in eine Datei loggen lassen und die dann parsen.


----------



## centrax (28. Apr 2011)

Das klingt echt gut.
Kennst du auch fertige Lösungen für Windows/Linux/Mac?
Ich möchte jetzt nicht das Rad neu erfinden...


----------



## s4ke (28. Apr 2011)

Ich zitiere jetzt mal sinngemäß aus einer Signatur aus einem anderen Forum:

Man braucht das Rad nicht neuzuerfinden, außer man möchte etwas über das Rad lernen.

Soll nicht böse gemeint sein und mir scheint, dass dein Problem wohl für den Anfang etwas schwierig ist (Brauchst du also hier nicht anzuwenden).

Zum Thema: Firefox kann man soweit ich weiß nicht direkt mit Java ansprechen, aber vielleicht hilft es ja was:

https://developer.mozilla.org/en/java_in_firefox_extensions

Java per JavaScript einbinden.


----------



## kirax (28. Apr 2011)

Vielleicht lässt du uns mal daran teilhaben was du letzten Endes vorhast - evtl. auch mit nem Beispielszenario.
Vielleicht lässt sich dein Problem nämlich auf ganz andere Art lösen


----------



## anonym (28. Apr 2011)

Falls Firefox nicht nur ein Beispiel war, sondern die tatsächliche Zielplattform, rate ich dir: 

Vergiss Java und schreib ein stinknormales Firefox- Plugin in C, JavaScript oder was auch immer Firefox unterstützt. 

Grund: 

(1) Wenn du Programmieren kannst, ist das lernen von Grundlagen einer neuen Sprache eine Sache von ein paar Tagen, der Rest kommt dann beim Programmieren. Mit Zwischenablage, Proxy oder bla hast du deutlich mehr Stress. 
(2) Wenn du nicht Programmieren kannst, ist auch egal, in welcher Sprache du rumexperimentierst. 
(3) Du schreibst "Java ist bei mir stabil ...". Ich denke mal, dass wirst du von jeder anderen Sprache auch sagen können, solange du nicht irgendeinen esoterischen/ experimentellen oder sonstwie unüblichen Compiler/ Sprache/ Framework erwischst.


----------



## centrax (29. Apr 2011)

Die Sache ist die:

Ich denke von mir schon, dass ich programmieren kann, habe aber eine sehr großes Softwareprojekt vor, und möchte dafür Java benutzen, u.A. weil ich das am besten und sichersten beherrsche.

Das ganz soll dann - neben der direkten Verwendung - auch in Firefox verwendbar sein.
Da das Projekt aber wie gesagt umfangreich ist, möchte ich das in Java machen. Denn Firefox-Plugins laufen über Javaskript und ne XML-ähnliche Sprache (XUL).
Ich brauche einmal die einfache OOP von Java und die ganzen Schnittstellenmöglichkeiten.

Von da her:
Kann ich mit einem Firefox-Plugin eine executable-jar mit Parameterargumenten ausführen? Sollte mit Javaskript gehen, oder?

Liebe Grüße


----------



## s4ke (29. Apr 2011)

centrax hat gesagt.:


> Von da her:
> Kann ich mit einem Firefox-Plugin eine executable-jar mit Parameterargumenten ausführen? Sollte mit Javaskript gehen, oder?



Ja, steht ja auch so auf der FF Seite.


----------



## auch (29. Apr 2011)

würde mich auch mal interessieren, wie das gehen soll, also per java.code den ff steuern...


----------



## gizmo (30. Apr 2011)

Ich weiss ja nicht was du machen willst, da dies aus deiner Beschreibung noch nicht hervorgegangen ist, aber kurzes googeln bringt folgende Resultate:
https://developer.mozilla.org/en/java_in_firefox_extensions
Java Firefox Extension - SIMILE
Selenium web application testing system
Hast du nicht gegoogelt oder lösen diese Dinge dein Problem nicht? Falls dein Problem mit keinem dieser Links lösbar ist, beschreibe es doch bitte genauer. Falls dein Problem gelöst werden kann, google doch das nächste mal.


----------



## auch (30. Apr 2011)

Mit Selenium kann man z.B. nicht auf Bilder zugreifen, die geladen worden sind. und ich werd das gefühl nicht los, das man auf den Inhalt selbiger auch mit den anderen Lösungen nicht zugreifen kann.


----------



## auch (30. Apr 2011)

außerdem wollte ich auch den ff ohne gui starten und dann bestimmte aktionen ausführen lassen. das geht mit einer ff.erweiterung nicht und obige lösungen funktionieren auch nur insofern, das man mit xul oder java script oder whatever programmiert, aber zugriff auf die java.api hat. nicht, was man sich darunter vorstellen würde, java zu programmieren. ;(


----------



## gizmo (1. Mai 2011)

Dann mach dir einen eigenen Thread für dein Problem auf, anstatt einfach diesen zu hijacken.


----------



## auch (1. Mai 2011)

"thema hijacken" (hab ich nur hier im forum gehört) und selbst einen eintrag zu "browser hijacken" gibt es bei wikipedia. wollt aber nichts "illegales" damit machen (ja, sagen alle) und dachte, knüpft direkt an dieses thema an

bilder liegen im cache irgendwo`? aber wäre es sinnvoll wenn man so darauf zugreifen würde? wenn nichts mehr mit dem thema zu tun hat : einfach ignorieren.


----------



## gizmo (1. Mai 2011)

Mach dir ein neues Thema auf!


----------

