Wie kann ich die Registry auslesen, um das entsprechende
Programm (z.B. Word) mit der Datei zu starten?
Da die Registry ein Windows-Spezifikum ist kannst du über die Standard-Java-Klassen nicht darauf zugreifen, allerdings bietet MS mit ihrem eigenen Java-API Funktionen (Klasse com.ms.wfc.app.Registry).
Allerdings kannst du das was du suchst einfacher haben, du kannst unter Windows Dateien direkt von der Kommandozeile (bzw. über die entsprechende Java-Methode) starten und er ruft das verknüpfte Programm auf, einfach „start dateiname.ext“ auf, oder auch nur „dateiname.ext“, weiß aber nicht ob letzteres auch bei älteren Windows-Versionen funkt, aber mit start gehts sicher.
Es stimmt, daß ich mit der Methode: Runtime.getRuntime().exec(dateiname.extension)
ein externes Programm starten kann.
Soweit so gut.
Aber, meiner Meinung nach lassen sich allerdings nur .exe und .bat Dateien starten.
Möchte ich z.B. eine .doc-Datei öffnen mit
Runtime.getRuntime().exec(„start c:/test.doc“) erhalte ich eine IO-Exception: CreateProcess: error=2.
Gebe ich den selben Befehl in einem Dos-Fenster ein, so wird Word mit der Datei gestartet.
Hast Du vielleicht den Quellcode zum Starten des Word-Dokuments?
Ist aber eher überflüssig, wahrscheinlich geht das mit dem File direkt anstarten eh auf allen Windows-Versionen (bin mir wie gesagt nur nicht bei Win95 sicher, hab leider auch keines zum ausprobieren).
Habs ausprobiert, es geht, wenn du direkt das .doc-File
startest,
also:
Runtime.getRuntime().exec(„c:\test.doc“);
Hallo Robert,
vielen Dank für Deine Anwort. Leider habe ich immer noch Probleme mit dem Starten des Prozesses. Starte ich einen neuen Prozess, wie oben beschrieben, so erhalte ich folgende Fehlermeldung:
java.io.IOException: CreateProcess: c:\test.doc error=193
at java.lang.Win32Process.create(Native Method)
at java.lang.Win32Process.(Win32Process.java:64)
at java.lang.Runtime.execInternal(Native Method)
at java.lang.Runtime.exec(Runtime.java:272)
at java.lang.Runtime.exec(Runtime.java:195)
at java.lang.Runtime.exec(Runtime.java:152)
at Ims.Foundation.ausfuehren.main(ausfuehren.java:45)
at java.lang.reflect.Method.invoke(Native Method)
at com.borland.jbuilder.util.BootStrap.invokeMain(
Unknown Source)
at com.borland.jbuilder.util.BootStrap.main(Unknown
Source)
Hast Du vielleicht eine Ahnung, was hier schief läuft?
Meiner Meinung nach, habe ich nicht die Erlaubnis vom Betriebssystem, um einen Prozess zu starten. Gebe ich jedoch den Befehl „c:\test.doc“ in einer Dos-Box ein, startet Word mit der Datei.
Was läuft hier falsch?
vielen Dank für Deine Anwort. Leider habe ich immer noch
Probleme mit dem Starten des Prozesses. Starte ich einen neuen
Prozess, wie oben beschrieben, so erhalte ich folgende
Fehlermeldung:
Sorry, alles mein Fehler.
Ich habs mit VJ++ kompiliert, da ging es, mit Sun SDK läuft es bei mir leider so auch nicht.
Das mit der Batch-Datei funktioniert mit Sun seltsamerweise auch nicht, er meldet zwar keinen Fehler, tut aber auch genau gar nichts. :o(