Difference between revisions of "Documentation/DevGuide/ProUNO/Basic/Instantiating UNO Services"

From Apache OpenOffice Wiki
Jump to: navigation, search
m (FINAL VERSION FOR L10N)
m
Line 11: Line 11:
 
<!--<idltopic>com.sun.star.lang.ServiceManager</idltopic>-->
 
<!--<idltopic>com.sun.star.lang.ServiceManager</idltopic>-->
 
In Basic, instantiate services using the Basic Runtime Library (RTL) function <code>createUnoService()</code>. This function expects a fully qualified service name and returns an object supporting this service, if it is available:
 
In Basic, instantiate services using the Basic Runtime Library (RTL) function <code>createUnoService()</code>. This function expects a fully qualified service name and returns an object supporting this service, if it is available:
 
+
<source lang="oobas">
 
   oSimpleFileAccess = CreateUnoService( "com.sun.star.ucb.SimpleFileAccess" )
 
   oSimpleFileAccess = CreateUnoService( "com.sun.star.ucb.SimpleFileAccess" )
 
+
</source>
 
This call instantiates the <idl>com.sun.star.ucb.SimpleFileAccess</idl> service. To ensure that the function was successful, the returned object can be checked with the <code>IsNull</code> function:
 
This call instantiates the <idl>com.sun.star.ucb.SimpleFileAccess</idl> service. To ensure that the function was successful, the returned object can be checked with the <code>IsNull</code> function:
 
+
<source lang="oobas">
 
   oSimpleFileAccess = CreateUnoService( "com.sun.star.ucb.SimpleFileAccess" )
 
   oSimpleFileAccess = CreateUnoService( "com.sun.star.ucb.SimpleFileAccess" )
 
   bError = IsNull( oSimpleFileAccess )' bError is set to False
 
   bError = IsNull( oSimpleFileAccess )' bError is set to False
Line 21: Line 21:
 
   oNoService = CreateUnoService( "com.sun.star.nowhere.ThisServiceDoesNotExist" )
 
   oNoService = CreateUnoService( "com.sun.star.nowhere.ThisServiceDoesNotExist" )
 
   bError = IsNull( oNoService )' bError is set to True
 
   bError = IsNull( oNoService )' bError is set to True
 
+
</source>
 
Instead of using <code>CreateUnoService()</code> to instantiate a service, it is also possible to get the global UNO <idl>com.sun.star.lang.ServiceManager</idl> of the {{PRODUCTNAME}} process by calling <code>GetProcessServiceManager()</code>. Once obtained, use <code>createInstance()</code> directly:
 
Instead of using <code>CreateUnoService()</code> to instantiate a service, it is also possible to get the global UNO <idl>com.sun.star.lang.ServiceManager</idl> of the {{PRODUCTNAME}} process by calling <code>GetProcessServiceManager()</code>. Once obtained, use <code>createInstance()</code> directly:
 
+
<source lang="oobas">
 
   oServiceMgr = GetProcessServiceManager()
 
   oServiceMgr = GetProcessServiceManager()
 
   oSimpleFileAccess = oServiceMgr.createInstance( "com.sun.star.ucb.SimpleFileAccess" )
 
   oSimpleFileAccess = oServiceMgr.createInstance( "com.sun.star.ucb.SimpleFileAccess" )
Line 30: Line 30:
 
    
 
    
 
   oSimpleFileAccess = CreateUnoService( "com.sun.star.ucb.SimpleFileAccess" )
 
   oSimpleFileAccess = CreateUnoService( "com.sun.star.ucb.SimpleFileAccess" )
 
+
</source>
 
The advantage of <code>GetProcessServiceManager()</code> is that additional information and pass in arguments is received when services are instantiated using the service manager. For instance, to initialize a service with arguments, the <code>createInstanceWithArguments()</code> method of <idl>com.sun.star.lang.XMultiServiceFactory</idl> has to be used at the service manager, because there is no appropriate Basic RTL function to do that. Example:
 
The advantage of <code>GetProcessServiceManager()</code> is that additional information and pass in arguments is received when services are instantiated using the service manager. For instance, to initialize a service with arguments, the <code>createInstanceWithArguments()</code> method of <idl>com.sun.star.lang.XMultiServiceFactory</idl> has to be used at the service manager, because there is no appropriate Basic RTL function to do that. Example:
 
+
<source lang="oobas">
 
   Dim args(1)
 
   Dim args(1)
 
   args(0) = "Important information"
 
   args(0) = "Important information"
Line 38: Line 38:
 
   oService = oServiceMgr.createInstanceWithArguments _
 
   oService = oServiceMgr.createInstanceWithArguments _
 
       ( "com.sun.star.nowhere.ServiceThatNeedsInitialization", args() )
 
       ( "com.sun.star.nowhere.ServiceThatNeedsInitialization", args() )
 
+
</source>
 
The object returned by <code>GetProcessServiceManager()</code> is a normal Basic UNO object supporting <idl>com.sun.star.lang.ServiceManager</idl>. Its properties and methods are accessed as described above.
 
The object returned by <code>GetProcessServiceManager()</code> is a normal Basic UNO object supporting <idl>com.sun.star.lang.ServiceManager</idl>. Its properties and methods are accessed as described above.
  

Revision as of 10:18, 22 October 2009



In Basic, instantiate services using the Basic Runtime Library (RTL) function createUnoService(). This function expects a fully qualified service name and returns an object supporting this service, if it is available:

  oSimpleFileAccess = CreateUnoService( "com.sun.star.ucb.SimpleFileAccess" )

This call instantiates the com.sun.star.ucb.SimpleFileAccess service. To ensure that the function was successful, the returned object can be checked with the IsNull function:

  oSimpleFileAccess = CreateUnoService( "com.sun.star.ucb.SimpleFileAccess" )
  bError = IsNull( oSimpleFileAccess )' bError is set to False
 
  oNoService = CreateUnoService( "com.sun.star.nowhere.ThisServiceDoesNotExist" )
  bError = IsNull( oNoService )' bError is set to True

Instead of using CreateUnoService() to instantiate a service, it is also possible to get the global UNO com.sun.star.lang.ServiceManager of the OpenOffice.org process by calling GetProcessServiceManager(). Once obtained, use createInstance() directly:

  oServiceMgr = GetProcessServiceManager()
  oSimpleFileAccess = oServiceMgr.createInstance( "com.sun.star.ucb.SimpleFileAccess" )
 
  ' is the same as
 
  oSimpleFileAccess = CreateUnoService( "com.sun.star.ucb.SimpleFileAccess" )

The advantage of GetProcessServiceManager() is that additional information and pass in arguments is received when services are instantiated using the service manager. For instance, to initialize a service with arguments, the createInstanceWithArguments() method of com.sun.star.lang.XMultiServiceFactory has to be used at the service manager, because there is no appropriate Basic RTL function to do that. Example:

  Dim args(1)
  args(0) = "Important information"
  args(1) = "Even more important information"
  oService = oServiceMgr.createInstanceWithArguments _
      ( "com.sun.star.nowhere.ServiceThatNeedsInitialization", args() )

The object returned by GetProcessServiceManager() is a normal Basic UNO object supporting com.sun.star.lang.ServiceManager. Its properties and methods are accessed as described above.

In addition, the Basic RTL provides special properties as API entry points. They are described in more detail in Features of OpenOffice.org Basic:

OpenOffice.org Basic RTL Property Description
ThisComponent Only exists in Basic code which is embedded in a Writer, Calc, Draw or Impress document. It contains the document model the Basic code is embedded in.
StarDesktop The com.sun.star.frame.Desktop singleton of the office application. It loads document components and handles the document windows. For instance, the document in the top window can be retrieved using oDoc = StarDesktop.CurrentComponent.
Content on this page is licensed under the Public Documentation License (PDL).
Personal tools
In other languages