【发布时间】:2017-04-21 23:42:27
【问题描述】:
我在创建 StarSuite Desktop 对象的实例时遇到了一些问题。
我使用了下面的标准构造,但每当涉及到这一行时:StarDesktop := StarOffice.CreateInstance('com.sun.star.frame.Desktop');
我的 StarDesktop 变体保持未分配状态。我很确定代码在那里之前是可以的,但也许 OpenOffice 安装的某些东西搞砸了。
有没有办法检查 com 对象或者有人遇到同样的问题并且可以解决它......
uses
ComObj;
procedure OpenOfficeDocument;
var
StarOffice: Variant;
StarDesktop: Variant;
begin
StarOffice := CreateOleObject('com.sun.star.ServiceManager');
StarDesktop := StarOffice.CreateInstance('com.sun.star.frame.Desktop');
// StarDesktop is always "unassigned"
....
是的,我知道。我应该更清楚地说明我太 100% 确信它会在正确的环境中正常工作。
但我的问题是它不起作用的原因可能是什么。为什么'com.sun.star.frame.Desktop' 实例未分配。我没有选项/方法来调试它...
投票给我有点不公平,我研究了一个小时,却没有找到解释为什么它不能工作的东西。
或者如何以及在哪里检查 Office 安装是否有问题(我已经卸载并重新安装了两次”
同样,我知道这对其他人有用,通常对我也有用,但是我的系统出了点问题,我想知道一些帮助来指出系统中可能出现的问题(而不是代码中的问题)示例...)
【问题讨论】:
-
StarOffice ServiceManager 是在 CreateOleObject 之后分配的!
-
请不要使用 cmets 来解决问题 - 编辑问题并更新文本。
-
您可以尝试使用 SysInternals Process Monitor 来查看尝试创建桌面时尝试了哪些注册表项文件以及结果
-
尝试
getAvailableServiceNames看看桌面名称是否被提供给您的服务管理器知道 - openoffice.org/api/docs/common/ref/com/sun/star/lang/…
标签: delphi com openoffice.org delphi-xe7