Hermann85 Geschrieben 7. Oktober 2009 Geschrieben 7. Oktober 2009 Hallo, Ich möchte mit Java eine chm- Datei über die F1-Taste aufrufen. Dabei soll z.B. im Frame "Einleitung" auch die Seite "Einleitung" in der chm- Datei oder im Frame "Systemarchitektur" die Seite "Systemarchitektur" in der chm-Datei geöffnet werden. Den Aufruf der Datei und das Springen auf die richtige Seite bekommen ich über Runtime.getRuntime().exec("C:/WINDOWS/hh.exe -mapid 2361 " + hilfeDatei); hin. Wenn ich nun im Frame "Einleitung" die F1-Taste drücke wird die chm- Datei auch an der richtigen Stelle geöffnet. Wechsel ich nun das Frame zu "Systemarchitektur" und drücke wieder F1 öffnet es eine neue Datei, obwohl die alte ja noch offen ist, was nicht wirklich schön ist. Gibt es eine Möglichkeit direkt in der chm- Datei die Seiten zu wechseln, sodass ich nicht so viele Dateien öffne? VG, Hermann Zitieren
flashpixx Geschrieben 7. Oktober 2009 Geschrieben 7. Oktober 2009 Gibt es eine Möglichkeit direkt in der chm- Datei die Seiten zu wechseln, sodass ich nicht so viele Dateien öffne? Naja Du öffnest mit dem Exec letztendlich immer einen weiteren (Sub)Prozess. Was mir aber letztendlich absolut nicht verständlich ist: Du benutzt Java, eine plattformunabhängige Sprache, nimmst aber CHM Dateien, die nur Windows-Systeme verstehen, wobei CHM Dateien nicht anderes als zusammen gepackte HTML Dateien sind. Ich würde Dir dazu raten, vergiss den ganzen Kram mit CHM Dateien und mache es in HTML. Du erstellt eine JAR Datei, in der Du auch die Hilfe als HTML Dateien einbindest. In Deinem Programm kannst Du entweder selbst eine HTML Komponente einbinden oder einfach die Standard-Anwendung des Systems für HTML Dateien dann entsprechend starten. Letztendlich wäre aber eine professionelle / javakonforme Lösung https://javahelp.dev.java.net/ Zitieren
Hermann85 Geschrieben 7. Oktober 2009 Autor Geschrieben 7. Oktober 2009 Danke erstmal für deine Antwort, Ich hatte auch schon an JavaHelp gedacht, aber mein Projektleiter hätte gern chm Dateien. Also hab ich es erstmal so probiert. Funktioniert ja auch soweit, nur dass ich die hh.exe halt jedesmal neu starten muss. Naja, wenn es meinen Projektleiter stört muss er halt den Vorschlag von JavaHelp annehmen. Zitieren
flashpixx Geschrieben 7. Oktober 2009 Geschrieben 7. Oktober 2009 Ich hatte auch schon an JavaHelp gedacht, aber mein Projektleiter hätte gern chm Dateien. Aber eine *.exe ist eben keine Cross-Plattform-Anwendung, sondern eine reine Windowslösung, was bei mir auf Linux und OSX schon mal nicht laufen würde Zitieren
dr.dimitri Geschrieben 7. Oktober 2009 Geschrieben 7. Oktober 2009 was bei mir auf Linux und OSX schon mal nicht laufen würde Das hat ja auch niemand gefordert oder? Dim Zitieren
Hermann85 Geschrieben 8. Oktober 2009 Autor Geschrieben 8. Oktober 2009 nein...das wurde nicht gefordert. Aber ich habe meinen Projektleiter dazu überreden können doch mit JavaHelp zu arbeiten, denn die einzige Alternartive währe gewesen das bereits bestehende Hilfe-Fenster bei erneutem Drücken der F1- Taste zu schließen und dann ein neues zu öffnen. Das fand er auch nicht so toll, weil man das als User sieht. Danke nochmal für die Antworten vg, Hermann Zitieren
flashpixx Geschrieben 8. Oktober 2009 Geschrieben 8. Oktober 2009 @Hermann85 & @dimitri: Ob es nun gefordert ist oder nicht ist doch erst einmal nicht relevant, denn Java selbst ist eine Sprache, die dafür ausgelegt ist, auf mehreren Architekturen zu laufen. Worin besteht dann der Sinn, wenn man Java einsetzt, wenn ich innerhalb des Programms wieder os-spezifische Aufrufe verwende. Wenn es hier um eine spezielle Hardware-Steuerung ginge, dann wäre das noch verständlich, aber für das Hilfe-System sicherlich nicht. Aber ich denke die Lösung von Dir Hermann ist so die beste Zitieren
dr.dimitri Geschrieben 8. Oktober 2009 Geschrieben 8. Oktober 2009 Wenn es hier um eine spezielle Hardware-Steuerung ginge, dann wäre das noch verständlich, Beim Hilfesystem nicht da hast Du schon recht. Aber wir haben z.B. eine Anbindung an Word und Outlook (Serienbrief- und Terminerzeugung) in unserer Clientanwendung. Damit bist Du auf jeden Fall OS abhängig (noch viel schlimmer sogar officeabhängig und zwar versionsspezifisch...) Dim Zitieren
flashpixx Geschrieben 8. Oktober 2009 Geschrieben 8. Oktober 2009 Aber wir haben z.B. eine Anbindung an Word und Outlook (Serienbrief- und Terminerzeugung) in unserer Clientanwendung. Damit bist Du auf jeden Fall OS abhängig (noch viel schlimmer sogar officeabhängig und zwar versionsspezifisch...) Das stimmt, ich sage ja bei so etwas oder eben Hardware kann man durchaus entsprechend eine Anbindung akzeptieren, die os-abhängig ist @Bitte von mir: Könntest Du vielleicht dazu einen Thread schreiben, wie so etwas generell umzusetzen ist. Ich würde das dann als Thread wie zur Literatur einrichten, da diese Frage hier schon öfters kam. Danke Zitieren
TDM Geschrieben 8. Oktober 2009 Geschrieben 8. Oktober 2009 Aber wir haben z.B. eine Anbindung an Word und Outlook (Serienbrief- und Terminerzeugung) in unserer Clientanwendung. Damit bist Du auf jeden Fall OS abhängig (noch viel schlimmer sogar officeabhängig und zwar versionsspezifisch...) Wieso? Interface schreiben und über eine Factory nachsehen ob nun ein WordApplication-Objekt oder ein OpenOfficeApplication-Objekt erzeugt werden muss (je nachdem, was installiert ist), dass die Factory und die einzelnen Klassendefinitionen wieder plattformspezifisch sind ist klar, stört aber nicht wirklich. :floet: Zitieren
dr.dimitri Geschrieben 8. Oktober 2009 Geschrieben 8. Oktober 2009 Bitte von mir: Könntest Du vielleicht dazu einen Thread schreiben, wie so etwas generell umzusetzen ist. Theoretisch schon aber ich als Datenfuzzi hab damit zum Glück nicht soviel zu tun. Die Client Schergen verwenden dazu Jacob und JDIC. Des weiteren steckt da einiges an Feinheiten drinnen, denn hin und wieder hört man die schon ein bissl fluchen. Für die Scannerintegration wird JTwain verwendet. Dim Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.