Difference between revisions of "Zh/Documentation/DevGuide/ProUNO/C++/Transparent Use of Office UNO Components"
m (New page: {{Documentation/DevGuide/ProUNOTOC |ProUNO2c=block |ProUNO2cC++=block |ShowPrevNext=block |PrevPage=Documentation/DevGuide/ProUNO/C++/Establishing Interprocess Connections |NextPage=Docume...) |
m |
||
Line 1: | Line 1: | ||
− | {{Documentation/DevGuide/ProUNOTOC | + | {{Documentation/DevGuide/ProUNOTOC/Zh |
|ProUNO2c=block | |ProUNO2c=block | ||
|ProUNO2cC++=block | |ProUNO2cC++=block | ||
|ShowPrevNext=block | |ShowPrevNext=block | ||
− | |PrevPage=Documentation/DevGuide/ProUNO/C++/Establishing Interprocess Connections | + | |PrevPage=Zh/Documentation/DevGuide/ProUNO/C++/Establishing Interprocess Connections |
− | |NextPage=Documentation/DevGuide/ProUNO/C++/Type Mappings | + | |NextPage=Zh/Documentation/DevGuide/ProUNO/C++/Type Mappings |
}} | }} | ||
[[en:Documentation/DevGuide/ProUNO/C++/Transparent Use of Office UNO Components]] | [[en:Documentation/DevGuide/ProUNO/C++/Transparent Use of Office UNO Components]] | ||
Line 12: | Line 12: | ||
<!--<idltopic>com.sun.star.uno.XComponentContext;com.sun.star.lang.XMultiComponentFactory</idltopic>--> | <!--<idltopic>com.sun.star.uno.XComponentContext;com.sun.star.lang.XMultiComponentFactory</idltopic>--> | ||
编写 C++ 客户机应用程序时,可以更加透明的方式获取 Office 组件上下文。有关详细信息,请参阅 [[Zh/Documentation/DevGuide/ProUNO/Java/Transparent Use of Office UNO Components|专业 UNO - UNO 语言绑定 - Java 语言绑定 - Office UNO 组件的透明使用]] 一节。 | 编写 C++ 客户机应用程序时,可以更加透明的方式获取 Office 组件上下文。有关详细信息,请参阅 [[Zh/Documentation/DevGuide/ProUNO/Java/Transparent Use of Office UNO Components|专业 UNO - UNO 语言绑定 - Java 语言绑定 - Office UNO 组件的透明使用]] 一节。 | ||
− | |||
Line 43: | Line 42: | ||
==== SDK tooling ==== | ==== SDK tooling ==== | ||
− | + | 为了方便起见,{{PRODUCTNAME}} 软件开发工具包 (SDK) 提供了一些用于编写 C++ 客户机应用程序的工具。 | |
− | 为了方便起见,{{PRODUCTNAME} 软件开发工具包 (SDK) 提供了一些用于编写 C++ 客户机应用程序的工具。 | + | |
− | + | ||
===== 应用程序加载器 ===== | ===== 应用程序加载器 ===== | ||
Line 60: | Line 57: | ||
在 Unix/Linux 平台上,应用程序加载器将错误消息写入 <code>stderr</code> 流。在 Windows 平台上,错误消息被写入应用程序可执行文件目录中的错误文件 <code><application name>-error.log</code>。如果无法写入,则错误文件被写入临时文件指定的目录。 | 在 Unix/Linux 平台上,应用程序加载器将错误消息写入 <code>stderr</code> 流。在 Windows 平台上,错误消息被写入应用程序可执行文件目录中的错误文件 <code><application name>-error.log</code>。如果无法写入,则错误文件被写入临时文件指定的目录。 | ||
− | |||
===== 查找 UNO 的安装路径 ===== | ===== 查找 UNO 的安装路径 ===== |
Revision as of 09:20, 3 July 2008
编写 C++ 客户机应用程序时,可以更加透明的方式获取 Office 组件上下文。有关详细信息,请参阅 专业 UNO - UNO 语言绑定 - Java 语言绑定 - Office UNO 组件的透明使用 一节。
引导函数
C++ 也提供引导函数,该函数从 UNO 安装引导组件上下文。简单客户机应用程序的一个示例显示了以下代码 snipplet:
// get the remote office component context Reference< XComponentContext > xContext( ::cppu::bootstrap() ); // get the remote office service manager Reference< XMultiComponentFactory > xServiceManager( xContext->getServiceManager() ); // get an instance of the remote office desktop UNO service // and query the XComponentLoader interface Reference < XComponentLoader > xComponentLoader( xServiceManager->createInstanceWithContext( OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.frame.Desktop" ) ), xContext ), UNO_QUERY_THROW );
::cppu::bootstrap()
函数以与 Java com.sun.star.comp.helper.Bootstrap.bootstrap()
方法相类似的方式来实现。它首先通过调用 ::cppu::defaultBootstrap_InitialComponentContext()
函数来引导本地组件上下文,然后通过使用 com.sun.star.bridge.UnoUrlResolver
服务试图建立到正在运行的办公软件的命名管道连接。如果没有任何办公软件在运行,则将启动一个 Office 进程。如果连接成功,则将返回远程组件上下文。
SDK tooling
为了方便起见,OpenOffice.org 软件开发工具包 (SDK) 提供了一些用于编写 C++ 客户机应用程序的工具。
应用程序加载器
使用 UNO 的 C++ 客户机应用程序与 C++ UNO 程序库链接,该程序库可以在 UNO 安装的程序目录中找到。运行客户机应用程序时,如果 UNO 程序目录包含在 PATH
(Windows) 或 LD_LIBRARY_PATH
(Unix/Linux) 环境变量中,则只能找到 C++ UNO 程序库。
由于需要知道 UNO 的安装位置,因此,对于 Windows,SDK 提供了应用程序加载器 unoapploader.exe
(对于 Unix/Linux,SDK 提供了 unoapploader
),该加载器可以在系统上检测到 UNO 安装,并将 UNO 安装的程序目录添加到 PATH
/ LD_LIBRARY_PATH
环境变量。之后,加载并启动应用程序进程,新进程由此继承调用进程的环境,包括已修改的 PATH
/ LD_LIBRARY_PATH
环境变量。
SDK 工具允许建立客户机可执行文件(例如,对于 Unix/Linux 为 SimpleBootstrap_cpp
),该文件可以通过以下方法调用:
./SimpleBootstrap_cpp
在这种情况下,SimpleBootstrap_cpp
可执行文件可以直接重命名为 unoapploader
可执行文件。所有应用程序代码都是第二个可执行文件的一部分,该文件必须与第一个可执行文件同名,但需要以下划线 '_
' 为前缀;在上面示例中,这意味着第二个可执行文件的名称为 _SimpleBootstrap_cpp
。
在 Unix/Linux 平台上,应用程序加载器将错误消息写入 stderr
流。在 Windows 平台上,错误消息被写入应用程序可执行文件目录中的错误文件 <application name>-error.log
。如果无法写入,则错误文件被写入临时文件指定的目录。
查找 UNO 的安装路径
UNO 的安装路径可以由用户通过将 UNO_PATH
环境变量设置为 UNO 安装的程序目录来指定,例如
setenv UNO_PATH /opt/OpenOffice.org/program
如果用户未指定 UNO 的安装位置,则将接受系统中的默认安装位置。
在 Windows 平台上,通过从 Windows 注册表中的根项 HKEY_CURRENT_USER 读取默认值项 'Software\OpenOffice.org\UNO\InstallPath',即可找到默认安装路径。如果没有此项,则可以从根项 HKEY_LOCAL_MACHINE 读取。
在 Unix/Linux 平台上,默认安装路径可以从 PATH 环境变量找到。这种方法要求 soffice 可执行文件或符号链接位于 PATH 环境变量中列出的目录之一。
Content on this page is licensed under the Public Documentation License (PDL). |