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

From Apache OpenOffice Wiki
Jump to: navigation, search
(New page: {{Documentation/DevGuide/ProUNOTOC/Zh |ProUNO2c=block |ProUNO2cC++=block |ShowPrevNext=block |PrevPage=Zh/Documentation/DevGuide/ProUNO/C++/C++ Language Binding |NextPage=Zh/Documentation/...)
 
m
 
Line 6: Line 6:
 
|NextPage=Zh/Documentation/DevGuide/ProUNO/C++/Transparent Use of Office UNO Components
 
|NextPage=Zh/Documentation/DevGuide/ProUNO/C++/Transparent Use of Office UNO Components
 
}}
 
}}
[[en:Documentation/DevGuide/ProUNO/C++/Establishing Interprocess Connections]]
+
{{Documentation/DevGuideLanguages|Documentation/DevGuide/ProUNO/C++/{{SUBPAGENAME}}}}
 
{{DISPLAYTITLE:建立进程间连接}}
 
{{DISPLAYTITLE:建立进程间连接}}
  

Latest revision as of 02:48, 14 May 2009




UNO 支持的任何语言绑定都使用本地服务管理器建立进程间连接,以创建连接到办公软件时所需的服务。有关详细信息,请参阅 专业 UNO - UNO 概念 - UNO 进程间连接 一节。以下客户机程序连接到正在运行的办公软件,并获取 com.sun.star.lang.XMultiServiceFactory,其语言为 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