2010-12-12 40 views
2

我在VS2010中有一個Windows窗體應用程序。它提到了Interop.Outlook(2003)。然後,我重新安裝了Windows XP和VS2010,但未安裝Outlook。檢測Outlook安裝並動態加載INterop.Outlook

現在,該項目不編譯。

我認爲,如果Outlook沒有安裝在我的程序執行的機器上,我的應用程序將無法正常工作。

我需要知道我是否檢測到安裝的Outlook,並動態加載Interop.Outlook.dll(用於在.NET 4中使用Outlook PIA或Embedded Interop類型)。

如果機器安裝了Outlook(2003,2007,2010,可能需要檢測版本和兼容Outlook版本的代碼),則該應用程序可以在功能性Outlook中正常工作。

如果機器沒有安裝Outlook,應用程序可以正常工作,但不具備功能性Outlook。

有關它的任何示例源代碼或goog模式和實踐?

回答

0

檢查安裝程序API以檢測Outlook的安裝狀態或使用here中描述的方法之一。

+0

***「如果你想使用Microsoft.Office.Interop.Outlook,那麼該組件應該安裝在系統中,否則它不會工作。」 *** *** – Kiquenet 2016-10-07 11:44:50

1

要檢測安裝的Outlook,請使用「Outlook.Application」查找ProgID。 從一個安裝程序,查看註冊表HKEY_CLASSES_ROOT \ Outlook.Application

在運行時,這樣做:

using System; 
using Microsoft.Office.Interop.Outlook; 

class Program 
{ 
    static void Main(string[] args) 
    { 
     var outlookType = Type.GetTypeFromProgID("Outlook.Application"); 
     if (outlookType == null) 
     { 
      Console.WriteLine("Not installed."); 
     } 
     else 
     { 
      var app = Activator.CreateInstance(outlookType) as Application; 
      Console.WriteLine(app.Name); 
     } 
    } 
} 

爲了避免動態加載的互操作問題,您應該將「嵌入互操作類型」爲Microsoft.Office.Interop.Outlook.Interop.dll

+0

***「如果你想使用Microsoft.Office.Interop.Outlook,那麼該組件應該安裝在系統中,否則它將無法工作。」 ?***真的嗎? – Kiquenet 2016-10-07 11:44:28