我已经有一个基于C#的Outlook Addin应用程序,可能会也可能不会安装在我的客户端版本的Outlook上。是否可以确定是否从同一客户机上运行的外部C#应用程序安装和启用了插件?如果是这样,怎么样?
非常感谢提前! 约翰
答案 0 :(得分:1)
如果您是通过MSI进行安装,则可以检查是否已使用Windows Installer API进行安装(有关详情MSDN,请参阅P/Invoke.net has a C# example)。
答案 1 :(得分: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;
}
非常感谢Mitch的快速反应。