最安全的Outlook ActiveX使用方法

时间:2012-05-29 13:18:17

标签: delphi activex delphi-xe2

在运行我的Delphi应用程序之后,我检查已安装的MS Outlook版本,因为如果在该计算机中存在大于2007的Outlook版本,我的应用程序将有所不同。

我还写了一个Outlook Addin,有时会崩溃。我猜测 这些崩溃与我在启动时创建的Outlook实例有关。

有没有办法以更软的方式创建这些ActiveX实例"。当我创建OLE对象时,我在Tray Bar中看到一个图标,其提示显示" Outlook正在被另一个应用程序使用",如果有可能删除它,我也会看到我的问题消失。 / p>

我想要实现的目标与here相同,其中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;

1 个答案:

答案 0 :(得分:2)

您的方法与Microsoft建议的方法不同:

How to: Check the Version of Outlook

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

然而 却遭受了一个主要的劣势:它只有在以正确的方式部署Outlook时才会起作用。在消费者机器上,这不是一个很大的问题,但在企业环境中,您可能(或将)偶尔会遇到由于不包含必要的MSI占用空间的过度热衷的IT部门而被剥离的自定义安装。

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