OpenOffice Instanz feststellen
Verfasst: Di, 06.04.2010 15:55
Guten Tag,
ich bin dabei von MS Office auf Openofficce umzusteigen. Mit VFP9 habe ich einige
Anwendungen, die auf Word zugreifen und die ich jetzt auf OpenWriter umstricke.
Bis jetz klappt das ganz gut.
Jetzt wird aber, wenn ich an OpenOffice übergebe, jedesmal eine neue Instanz von
Writer aufgemacht.
Meine Fragen:
1.) Wie kann via OObasic (Automation )feststellen, ob Openoffice schon läuft.
2.) Wie kann ich auf diese laufende Instanz zugreifen um damit ein Dokument zu öffnen.
Es geht nicht nicht darum auf ein schon geöffnetes Dokument zuzugreifen, sondern
nur darum, zu verhindern das ich eine weitere Instanz von Openoffice starte.
Die Sache läuft nämlich auf einem Citrix Server.
Hat da jemand Erfahrung bzw. Tipps für mich??
Mein Code bisher:
SET LIBRARY TO liboo addi
oDoc = OOoOpenURL( "file:///c:/kderinner.odt" )
In LIBRARY wird die Function OOopenURL angesprochen
und die sieht dann so aus
In der Funktion gibt auch den Parameter -hidden- Damit ereiche ich aber nur,
das ich in dem bereits geöffnetem Fenster ein neues Dokument aufmache.
>>
FUNCTION OOoOpenURL( cURL )
* LOCAL oPropertyValue
* oPropertyValue = OOoCreateStruct( "com.sun.star.beans.PropertyValue" )
* LOCAL ARRAY aNoArgs[1]
* aNoArgs[1] = oPropertyValue
* aNoArgs[1].Name = "ReadOnly"
* aNoArgs[1].Value = .F.
* These two lines replace the alternate version above,
* which are left commented for the insight they provide.
LOCAL ARRAY aNoArgs[1]
aNoArgs[1] = OOoPropertyValue( "Hidden", .F. )
LOCAL oDesktop
oDesktop = OOoGetDesktop()
LOCAL oDoc
oDoc = oDesktop.LoadComponentFromUrl( cURL, "_blank", 0, @ aNoargs )
* Make sure that arrays passed to this document are passed zero based.
COMARRAY( oDoc, 10 )
RETURN oDoc
ENDFUNC
<<
Schöne Grüße aus dem Norden
Zebra
ich bin dabei von MS Office auf Openofficce umzusteigen. Mit VFP9 habe ich einige
Anwendungen, die auf Word zugreifen und die ich jetzt auf OpenWriter umstricke.
Bis jetz klappt das ganz gut.
Jetzt wird aber, wenn ich an OpenOffice übergebe, jedesmal eine neue Instanz von
Writer aufgemacht.
Meine Fragen:
1.) Wie kann via OObasic (Automation )feststellen, ob Openoffice schon läuft.
2.) Wie kann ich auf diese laufende Instanz zugreifen um damit ein Dokument zu öffnen.
Es geht nicht nicht darum auf ein schon geöffnetes Dokument zuzugreifen, sondern
nur darum, zu verhindern das ich eine weitere Instanz von Openoffice starte.
Die Sache läuft nämlich auf einem Citrix Server.
Hat da jemand Erfahrung bzw. Tipps für mich??
Mein Code bisher:
SET LIBRARY TO liboo addi
oDoc = OOoOpenURL( "file:///c:/kderinner.odt" )
In LIBRARY wird die Function OOopenURL angesprochen
und die sieht dann so aus
In der Funktion gibt auch den Parameter -hidden- Damit ereiche ich aber nur,
das ich in dem bereits geöffnetem Fenster ein neues Dokument aufmache.
>>
FUNCTION OOoOpenURL( cURL )
* LOCAL oPropertyValue
* oPropertyValue = OOoCreateStruct( "com.sun.star.beans.PropertyValue" )
* LOCAL ARRAY aNoArgs[1]
* aNoArgs[1] = oPropertyValue
* aNoArgs[1].Name = "ReadOnly"
* aNoArgs[1].Value = .F.
* These two lines replace the alternate version above,
* which are left commented for the insight they provide.
LOCAL ARRAY aNoArgs[1]
aNoArgs[1] = OOoPropertyValue( "Hidden", .F. )
LOCAL oDesktop
oDesktop = OOoGetDesktop()
LOCAL oDoc
oDoc = oDesktop.LoadComponentFromUrl( cURL, "_blank", 0, @ aNoargs )
* Make sure that arrays passed to this document are passed zero based.
COMARRAY( oDoc, 10 )
RETURN oDoc
ENDFUNC
<<
Schöne Grüße aus dem Norden
Zebra