1

Delphi アプリケーションを実行した直後に、インストールされている MS Outlook のバージョンを確認します。これは、マシンに 2007 年以降の Outlook バージョンがある場合、アプリの動作が異なるためです。

また、時々クラッシュする Outlook アドインも作成しました。これらのクラッシュは、起動時に作成した Outlook インスタンスに関連していると思われます。

これらの ActiveX インスタンスを「よりソフトな方法」で作成する方法はありますか。OLE オブジェクトを作成すると、トレイ バーに "Outlook は別のアプリケーションで使用されています" というヒントのアイコンが表示されます。

どういうわけか私が達成したいのは、パラメーターが OLE オブジェクトの「よりスムーズな」使用を可能にするここで行われたのと同じです。wdDoNotSaveChanges

これは、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

あなたのアプローチは、マイクロソフトがここで提案したものとは異なります。

方法: Outlook のバージョンを確認します

それらのバージョンは、Microsoft インストーラー機能を使用して Outlook 実行可能ファイルの場所を検出し、そこからファイル バージョンを直接抽出します。このアプローチでは、Outlook をインスタンス化するときに発生する可能性のある問題は発生しません。また、はるかに高速です。

ただし、大きな欠点が 1 つあります。それは、Outlook が Microsoft の方法で適切に展開されている場合にのみ機能することです。コンシューマ マシンでは、これはそれほど問題ではありませんが、エンタープライズ環境では、必要な MSI フットプリントが含まれていない、過度に熱心な IT 部門による無駄なカスタム インストールに時折遭遇する可能性があります (/発生する可能性があります)。

ターゲット ユーザーによっては、それはまったく問題にならない場合があります。

于 2012-05-29T15:34:01.460 に答える