Difference between revisions of "Documentation/DevGuide/ProUNO/C++/Establishing Interprocess Connections"

From Apache OpenOffice Wiki
Jump to: navigation, search
m
m (FINAL VERSION FOR L10N)
Line 6: Line 6:
 
|NextPage=Documentation/DevGuide/ProUNO/C++/Transparent Use of Office UNO Components
 
|NextPage=Documentation/DevGuide/ProUNO/C++/Transparent Use of Office UNO Components
 
}}
 
}}
[[zh:Zh/Documentation/DevGuide/ProUNO/C++/Establishing Interprocess Connections]]
+
{{Documentation/DevGuideLanguages|Documentation/DevGuide/ProUNO/C++/{{SUBPAGENAME}}}}
 
{{DISPLAYTITLE:Establishing Interprocess Connections}}
 
{{DISPLAYTITLE:Establishing Interprocess Connections}}
 
<!--<idltopic>com.sun.star.bridge.UnoUrlResolver;com.sun.star.bridge.XUnoUrlResolver;com.sun.star.uno.XComponentContext;com.sun.star.lang.XMultiComponentFactory;com.sun.star.lang.DisposedException;com.sun.star.lang.ServiceManager</idltopic>-->
 
<!--<idltopic>com.sun.star.bridge.UnoUrlResolver;com.sun.star.bridge.XUnoUrlResolver;com.sun.star.uno.XComponentContext;com.sun.star.lang.XMultiComponentFactory;com.sun.star.lang.DisposedException;com.sun.star.lang.ServiceManager</idltopic>-->

Revision as of 08:08, 13 May 2009



Any language binding supported by UNO establishes interprocess connections using a local service manager to create the services necessary to connect to the office. Refer to chapter UNO Interprocess Connections for additional information. The following client program connects to a running office and retrieves the com.sun.star.lang.XMultiServiceFactory in C++:


 #include <stdio.h>
 
 #include <cppuhelper/bootstrap.hxx>
 #include <com/sun/star/bridge/XUnoUrlResolver.hpp>
 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
 
 using namespace com::sun::star::uno;
 using namespace com::sun::star::lang;
 using namespace com::sun::star::bridge;
 using namespace rtl;
 using namespace cppu;
 
 int main( )
 {
     // create the initial component context
     Reference< XComponentContext > rComponentContext =
         defaultBootstrap_InitialComponentContext();
  
     // retrieve the service manager from the context
     Reference< XMultiComponentFactory > rServiceManager = 
         rComponentContext->getServiceManager();
 
     // instantiate a sample service with the service manager.
     Reference< XInterface > rInstance =
         rServiceManager->createInstanceWithContext( 
         OUString::createFromAscii("com.sun.star.bridge.UnoUrlResolver" ),
         rComponentContext );
 
     // Query for the XUnoUrlResolver interface
     Reference< XUnoUrlResolver > rResolver( rInstance, UNO_QUERY );
  
     if( ! rResolver.is() )
     {
         printf( "Error: Couldn't instantiate com.sun.star.bridge.UnoUrlResolver service\n" );
         return 1;
     }
     try
     {
         // resolve the uno-URL
         rInstance = rResolver->resolve( OUString::createFromAscii( 
             "uno:socket,host=localhost,port=2002;urp;StarOffice.ServiceManager" ) );
 
         if( ! rInstance.is() )
         {
             printf( "StarOffice.ServiceManager is not exported from remote process\n" );
             return 1;
         }
 
         // query for the simpler XMultiServiceFactory interface, sufficient for scripting
         Reference< XMultiServiceFactory > rOfficeServiceManager (rInstance, UNO_QUERY);
 
         if( ! rOfficeServiceManager.is() )
         {
             printf( "XMultiServiceFactory interface is not exported\n" );
             return 1;
         }
 
         printf( "Connected sucessfully to the office\n" );
     }
     catch( Exception &e )
     {
         OString o = OUStringToOString( e.Message, RTL_TEXTENCODING_ASCII_US );
         printf( "Error: %s\n", o.pData->buffer );
         return 1;
     }
     return 0;
 }


Content on this page is licensed under the Public Documentation License (PDL).
Personal tools
In other languages