Verständnisproblem zum DispatchHelper
Verfasst: Mi, 09.06.2010 16:19
Hallo,
ich habe noch ein Problem, wie ich DispatchHelper richtig verwende. Meine Situation:
1. Ein Word-Dokument wird im Writer manuell geöffnet.
2. Ein OOo-Makro liest den Inhalt des ersten Dokuments in eine String-Variable.
3. Das Makro öffnet variabel (abhängig vom Inhalt des ersten Dokuments) ein anderes Word-Dokument.
4. Das Makro sucht im zweiten Dokument bestimmte Inhalte und fügt Teile der String-Variablen ein.
Alle Einzelteile sind mir klar; aber der richtige Aufruf des DispatchHelpers bereitet mir Schwierigkeiten.
Punkt 3 wird im wesentlichen so gelöst ("dest" steht für "Destination"):
Jetzt brauche ich Zugriff auf diese Datei. Aber so klappt es nicht:
Das führt zu folgendem Fehler (der übersteigt meine Englisch-Kenntnisse deutlich):
Aber das aktuelle Fenster ist doch mein erstes Dokument; mit dem dispatcher will ich auf das zweite Dokument zugreifen. Welcher Typ wird als erstes Argument beim executeDispatch verlangt? Welcher Datentyp wird durch loadComponent zurückgegeben? Wie komme ich von diesem Typ zu dem Doc-Typ für den Dispatcher?
Danke für Hinweise und ggf. Erklärungen! Jürgen
ich habe noch ein Problem, wie ich DispatchHelper richtig verwende. Meine Situation:
1. Ein Word-Dokument wird im Writer manuell geöffnet.
2. Ein OOo-Makro liest den Inhalt des ersten Dokuments in eine String-Variable.
3. Das Makro öffnet variabel (abhängig vom Inhalt des ersten Dokuments) ein anderes Word-Dokument.
4. Das Makro sucht im zweiten Dokument bestimmte Inhalte und fügt Teile der String-Variablen ein.
Alle Einzelteile sind mir klar; aber der richtige Aufruf des DispatchHelpers bereitet mir Schwierigkeiten.
Punkt 3 wird im wesentlichen so gelöst ("dest" steht für "Destination"):
Code: Alles auswählen
destDoc = StarDesktop.loadComponentFromURL( converttourl(destUrl), "_blank", 0, myProps() )
Code: Alles auswählen
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dispatcher.executeDispatch(destDoc, ".uno:GoToStartOfDoc", "", 0, Array())
Alle Beispiele, die ich über die Forumssuche oder im Wiki gefunden habe, greifen immer auf das aktuelle Fenster zu:IllegalArgumentException
Message: cannot coerce argument type during corereflection call!
Code: Alles auswählen
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dispatcher.executeDispatch(document, ... )
Danke für Hinweise und ggf. Erklärungen! Jürgen