在运行我的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;
答案 0 :(得分:2)
您的方法与Microsoft建议的方法不同:
How to: Check the Version of Outlook。
他们的版本使用Microsoft Installer功能来检测Outlook可执行文件的位置,然后直接从那里提取文件版本。这种方法不会像您一样在实例化Outlook时遇到任何问题。它也是 lot 更快。
然而 却遭受了一个主要的劣势:它只有在以正确的方式部署Outlook时才会起作用。在消费者机器上,这不是一个很大的问题,但在企业环境中,您可能(或将)偶尔会遇到由于不包含必要的MSI占用空间的过度热衷的IT部门而被剥离的自定义安装。根据您的目标受众,这可能根本不是真正的问题。