The type com.sun.star.frame.Desktop
is deprecated, and it is recommended to use the com.sun.star.frame.theDesktop
singleton instead.
Other language bindings support access to a singleton. In Java, this thread says the following works:
com.sun.star.frame.theDesktop.get(componentContext)
However, the com.sun.star.frame
namespace isn't available under the Automation bridge; there is only the single entry point of the service manager:
var objServiceManager = new ActiveXObject('com.sun.star.ServiceManager');
How can I acces this (and other) singletons?
(Originally posted on ask.libreoffice)
Singletons are accessed using the getByName
method on the script context, passing in a string path to the singleton:
'/singletons/com.sun.star.frame.theDesktop'
The Automation bridge exposes the script context at the DefaultContext
property on the service manager:
var serviceManager = new ActiveXObject('com.sun.star.ServiceManager');
var desktop = serviceManager.defaultContext.getByName('/singletons/com.sun.star.frame.theDesktop');
(I was led to the solution by this post where the author is trying to automate OpenOffice using Delphi.)