1

运行我的 Delphi 应用程序后,我检查已安装的 MS Outlook 版本,因为如果机器中的 Outlook 版本高于 2007,我的应用程序的工作方式会有所不同。

我还写了一个有时会崩溃的 Outlook 插件。我怀疑这些崩溃与我在启动时创建的 Outlook 实例有关。

有没有办法以“更柔和的方式”创建这些 ActiveX 实例。当我现在创建 OLE 对象时,我在托盘栏中看到一个图标,其提示显示“Outlook 正在被另一个应用程序使用”,如果可以删除它,我也会看到我的问题消失了。

不知何故,我想实现的与此处相同,其中wdDoNotSaveChanges参数允许“更顺畅”地使用 OLE 对象。

这是我用来检查 Outlook 版本的代码:

var
  OutlookApp: OLEVariant;
  Version : String;
begin
  { Create the OLE Object }
  Try
    OutlookApp := CreateOLEObject('Outlook.Application');
    Version := OutlookApp.version;
    OutlookVersion := StrToint(SubstrEx(1,Version,'.'));
    OutlookApp := VarNull;
  except
    on E: Exception do
    begin
      OutlookVersion := -1;
    end;
  End;
4

1 回答 1

2

您的方法与 Microsoft 在此处建议的方法不同:

如何:检查 Outlook 的版本

他们的版本使用 Microsoft 安装程序功能来检测 Outlook 可执行文件的位置,然后直接从那里提取文件版本。这种方法不会遇到您在像您一样实例化 Outlook 时可能遇到的任何问题。它也快了很多。

然而,它确实存在一个主要缺点:只有在 Outlook 以 Microsoft 方式正确部署的情况下才能正常工作。在消费者机器上,这不是什么大问题,但在企业环境中,您可能(/将)偶尔会遇到不包括必要 MSI 足迹的过度热心的 IT 部门的精简自定义安装。

根据您的目标受众,这可能根本不是真正的问题。

于 2012-05-29T15:34:01.460 回答