Die getType
Verfahren soll ein Objekt zurück, das die Art des Elements in die Methode übergeben darstellt:Reflexion kehrt com.sun.star.uno.XInterface Typ für alle Objekte
var serviceManager = new ActiveXObject('com.sun.star.ServiceManager');
var desktop = serviceManager.createInstance("com.sun.star.frame.Desktop");
var document = desktop.loadComponentFromURL("private:factory/swriter", "_blank", 0, []);
var coreReflection = serviceManager.createInstance("com.sun.star.reflection.CoreReflection");
// should return a type representing the com.sun.star.frame.Desktop type
var classInfo = coreReflection.getType(desktop);
jedoch die classInfo
immer scheint den com.sun.star.uno.XInterface
Typen enthalten:
// outputs com.sun.star.uno.XInterface
WScript.Echo(classInfo.getName());
Auch wenn ich in anderen Objekten zu übergeben, ist der Ausgang gleich:
classInfo = coreReflection.getType(document);
WScript.Echo(classInfo.getName());
Wie kann ich den tatsächlichen Typ herausfinden?
(Ursprünglich bei ask.libreoffice veröffentlicht)
Diese Fragen werden am häufigsten in den LibreOffice-Entwickler-Mailinglisten gestellt. Wahrscheinlich ist die einzige Person, die solche Fragen beantworten und Ratschläge geben kann, wie man eine gute Uno-Brücke implementiert, Stephan Bergmann, der bezahlter LibreOffice-Entwickler ist. – moggi
@moggi Ich bin (noch) nicht daran interessiert, eine Uno-Bridge zu implementieren; Ich bin daran interessiert, [die vorhandene Automatisierungsbrücke] (https://wiki.openoffice.org/wiki/Documentation/DevGuide/ProUNO/Bridge/Automation_Bridge) zu verwenden; aber vielen Dank trotzdem. –
selbst in diesem Fall könnte Stephan und die Mailingliste der beste Ansatz sein. Z.B. com.sun.star.frame.Desktop ist ein Service und kein Typ, aber nur Stephan oder möglicherweise Michael würden die Details wissen, warum getType XInterface anstelle einer der anderen Schnittstellen zurückgibt. – moggi