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

From Apache OpenOffice Wiki
Jump to: navigation, search
(Initial author Sun Microsystems, Inc.)
 
 
(7 intermediate revisions by 4 users not shown)
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
 
}}
 
}}
 +
{{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>-->
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 [[Documentation/DevGuide/ProUNO/UNO Interprocess Connections|UNO Interprocess Connections]] for additional information. The following client program connects to a running office and retrieves the <idl>com.sun.star.lang.XMultiServiceFactory</idl> in C++:  
+
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 [[Documentation/DevGuide/ProUNO/UNO Interprocess Connections|UNO Interprocess Connections]] for additional information. The following client program connects to a running office and retrieves the <idl>com.sun.star.lang.XMultiServiceFactory</idl> in C++:
<!--[SOURCE:ProfUNO/CppBinding/office_connect.cxx]-->
+
  
 +
<!--[SOURCE:ProfUNO/CppBinding/office_connect.cxx]-->
 +
<syntaxhighlight lang="cpp">
 
   #include <stdio.h>
 
   #include <stdio.h>
 
    
 
    
Line 78: Line 80:
 
       return 0;
 
       return 0;
 
   }
 
   }
 
+
</syntaxhighlight>
  
 
{{PDL1}}
 
{{PDL1}}
[[Category: Professional UNO]]
+
 
 +
[[Category:Documentation/Developer's Guide/Professional UNO]]

Latest revision as of 13:00, 23 December 2020



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