Hallo Stephan,
dies habe ich im OOME gefunden:
11.1.1. Zwei unterschiedliche Methoden, OOo zu steuern
Die flexibelste Methode zur Manipulation eines OOo-Dokuments ist der Zugriff auf die internen
UNO-Objekte. Der Weg über das Modell bietet bedeutende Steuerungsmöglichkeiten, aber man
muss die unterschiedlichen Services und Interfaces gut verstehen.
Ein anderer Weg, der sehr wenig Verständnis der OOo-Interna voraussetzt, geht über einen UNO-
Dispatcher. Der Dispatcher übernimmt eine Anweisung wie „.uno:Undo“ und kümmert sich um den
Rest der Details. Der Frame stellt die für die Arbeit benötigten Dispatcher bereit. Vereinfacht gesagt,
stellen Sie sich einen Dispatch wie die Auswahl einer Aktion aus dem Menü vor.
Obwohl die direkte Kontrolle über UNO-Services weitest reichende Funktionalität und Flexibilität
bietet, sind doch manche Operationen leichter mit dem Dispatcher erledigt, manchmal ist der Dispat-
cher auch die einzige Möglichkeit, eine Aufgabe durchzuführen. Zum Beispiel ist für die Nutzung
des Zwischenspeichers der Dispatcher die beste Lösung. Sogar der Makrorecorder erledigt fast alle
Aufgaben mit einem Dispatcher.
Drei Dinge werden für die Arbeit mit einem Dispatcher benötigt: (1) der Dispatch-Befehl, (2) Argu-
mente zur Steuerung des Dispatch und (3) ein Objekt, das den Dispatch-Befehl ausführen kann (der
Dispatch-Provider, normalerweise ein Frame). Jedes Dokument hat einen Controller, der sozusagen
als Schnittstelle zwischen der Außenwelt und dem Dokument fungiert. Mit dem Controller wählen
Sie zum Beispiel Text aus, suchen die aktuelle Cursorposition oder ermitteln das aktive Tabellenblatt
in der Tabellenkalkulation. Der aktuelle Controller kann auch den Frame des Dokuments zurückge-
ben, der den Dispatch-Befehl unterstützt.
Ich kenne mich mit UNO nicht aus, aber ohne Frame scheint
diese Anweisung nicht zu funktionieren.
Letztens hatte ich mal gelesen, daß es überhaupt erst ein UNO-Objekt bzw. -Service benötigt, um UNO benutzen zu können.
Wenn du dies also vorher vielleicht noch erstellst?
Code: Alles auswählen
oDispHelper = CreateUnoService("com.sun.star.frame.DispatchHelper")
oDispHelper.executeDispatch(oProvider,".uno:NewDoc", "", , Array())
Aus deiner Argumentation ergibt sich aber die Frage,
wohin du eine Vorlage laden möchtest, wenn Office gar nicht geöffnet ist? Im Vorlagen-Picker selbst hat man schließlich keine Möglichkeit mehr, Office zu starten?!
Aber wenn LO erwartet wird, starte es doch vorher einfach (mittels Shell) unsichtbar im Hintergrund?
Viele Grüße und einen guten Rutsch,
Marcel