2014-11-24 30 views
0

我已经有一个基于C#的Outlook附加应用程序,可能会或可能不会在我的客户端版本的Outlook上安装。是否有可能通过在同一客户机上运行的外部C#应用程序来确定插件是否安装并启用?如果是这样,怎么样?从外部C#应用程序获取现有的Outlook附加信息

非常感谢提前! John

回答

1

如果您是通过MSI安装的,可以检查它是否已使用Windows Installer API安装(有关更多信息,请参见MSDNP/Invoke.net has a C# example)。

+0

谢谢你回到我这么快// @Mitch。不幸的是我没有通过MSI安装。不过,我确实设法将最终符合我需求的答案放在一起。 – 2014-11-26 14:25:32

0

最后,下面的代码解决我的问题:

using System.Reflection; 
using System.Runtime.InteropServices; 
using Outlook = Microsoft.Office.Interop.Outlook; 
using Microsoft.Office.Core; 

... 

public static bool IsOutlookAddinEnabled(string addinName) 
{ 
    bool isEnabled = false; 

    Outlook.Application outlookApp = null; 

    if (System.Diagnostics.Process.GetProcessesByName("OUTLOOK").Length > 0) 
    { 
     outlookApp = Marshal.GetActiveObject("Outlook.Application") as Outlook.Application; 
    } 
    else 
    { 
     outlookApp = new Outlook.Application(); 
     Outlook.NameSpace nameSpace = outlookApp.GetNamespace("MAPI"); 
     nameSpace.Logon("", "", Missing.Value, Missing.Value); 
     nameSpace = null; 
    } 

    try 
    { 
     COMAddIn addin = outlookApp.COMAddIns.Item(addinName); 
     isEnabled = addin.Connect; 
    } 
    catch { } 

    return isEnabled; 
} 

非常感谢米奇为他的快速反应。

相关问题