Externe Programme

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Ramses
**
Beiträge: 21
Registriert: Fr, 16.07.2004 09:20

Externe Programme

Beitrag von Ramses »

Hallo Leute,

jetzt muss ich heute wieder den ersten Tag nach meinem viel zu kurzem Urlaub arbeiten und nun das :evil:
Ich möchte gern gerne so eine Art Hilfe-Datei erstellen, die über einen Button gestartet wird.

Code: Alles auswählen

Sub Button_Help
.
.
.

 if FileExists ("U:\Tempalte\help.html") then 
   sFile = "U:\Template\help.html"
 else 
   msgbox "Datei nicht vorhanden"
 end if 

'Shell("U:\Template\help.html", 2) 
Shell(sFile, 2) 

end sub
Als Ergebnis bekomme ich aber eine Fehlermeldung: Datei nicht gefunden.

Die Datei ist aber da - dafür habe ich ja bereits die If-Abfrage extra dazwischen gepackt, um mögliche Fehler oder so zu vermeiden :)

Leider alles ohne Erfolg

Vielleicht weiß ja jemand was ich hier übersehen habe

Danke

Dimi
Charly
*****
Beiträge: 450
Registriert: Di, 20.01.2004 13:14
Wohnort: München

Beitrag von Charly »

Hallo Rames!

Ich kann leider nicht sagen, warum am Schluss die Fehlermeldung kommt, obwohl die Datei vorhanden ist.

Ich will dich nur auf einen logischen Fehler in deinem Programm aufmerksam machen. Denn wenn die Datei nicht vorhanden ist, erhälts du zwar eine Meldungsbox, aber nach Bestätigung wird trotzdem der Shell Befehl ausgeführt. Dann kommt auch eine Fehlermeldung. Ich würde den Shell-Befehl vor den else-Befehl setzen.


Gruß Charly
Ramses
**
Beiträge: 21
Registriert: Fr, 16.07.2004 09:20

Beitrag von Ramses »

Hallo Charly

Die If-Abfrage soll da garnicht hin.
Die ist nur da, weil ich irgendwann mal so genervt war und um nun ganz sicher zu gehen, dass es diese Datei auch wirklich gibt habe ich das eingebaut. :)

Ansonsten hast du natürlich recht.
Sollte ich das dann auch mal irgendwann zum laufen bekommen
wird da natürlich auch noch Abfangroutine für Fehler eingebaut...

Gruß

Dimi
Toxitom
********
Beiträge: 3768
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey Dimi,

logischer Fehler. Mit shell() kannst du ein externes Programm starten, keine Datei!
Dein Programmaufruf müsste also so etwa wie shell("irgend/ein/Pfad/mozilla.exe pfad/dateiname.html",2)
oder so. Nur der Aufruf einer Datei wird nicht funktionieren.
Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Ramses
**
Beiträge: 21
Registriert: Fr, 16.07.2004 09:20

Beitrag von Ramses »

Hallo Thomas

hab es eben getestet - läuft dann so wie gewünscht.
Das Probl. ist aber, dass ich nicht unbedingt erst noch die Pfadangabe zu dem Explorer oder Mozilla auslesen möchte :?

Gibt es denn eine andere Möglichkeit eine Datei direkt zu starten?

Gruß
Dimi
Toxitom
********
Beiträge: 3768
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

hey Dimi,
Gibt es denn eine andere Möglichkeit eine Datei direkt zu starten?
Nein :( Dateien sind halt nun mal keine Programme. Wenn du in einer Shell die Datei eingibst und Return drückst, wird auch nichts passieren. Dass unter Windows (und unter KDE, Gnome) beim Aufruf einer html-Datei der Standardbrowser startet, ist ein Ergebnis der Benutzeroberfläche, der Zuordnung der MIME Typen und der entsprechenden Verknüpfungen - um es dem Benutzer so einfach wie möglich zu machen. Das geht aber nicht beim Skripting.
Um nicht den Pfad zu erforschen - vielleicht kannst du eine Umgebungsvariable auslesen? (nicht getestet).
Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Hallo Ramses,

Du könntest natürlich den Pfad der für eine Dateiendung registrierten Anwendung aus der Registrierung lesen (Für lesen/schreiben in der Registry gibt es Beispielcode in den mitgelieferten Bibliotheken in OpenOffice).

Andererseits ist das hier bequemer. Mit *.HTML funktioniert es, aber es sollte eigentlich jede Datei mit dem für die Endung registrierten Anwendung öffnen, so die Datei nicht schnell genug weglaufen kann. :wink:

Code: Alles auswählen

Sub beliebige_Datei_starten 
'Dateiendung muß auf dem System registriert sein
Dim starten as object 
starten = createUnoService("com.sun.star.system.SystemShellExecute") 

starten.execute(ConvertToUrl("U:\Template\help.html"), "", 0) 

End Sub
Das ist natürlich nur unter Windows zu verwenden, ich glaube nicht das es unter Linux geht getestet habe ich es aber nicht.


Gruß
Stephan
Ramses
**
Beiträge: 21
Registriert: Fr, 16.07.2004 09:20

Beitrag von Ramses »

Wow, vielen Dank - das ist genau das was ich gesucht habe :D

Gruß
Dimi
Antworten