Marshal.GetActiveObject从esri c #adginin抛出异常

时间:2014-05-21 19:52:51

标签: c# add-in arcmap

我希望我的esri插件能够查找并使用现有的excel实例。代码:

 Microsoft.Office.Interop.Excel.Application exApp = null;

   try

   {

      exApp =     (Microsoft.Office.Interop.Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");

   }

   catch (Exception err)

   {MessageBox.Show(err.ToString()); }

GetActiveObject每次抛出一个异常,如果excel运行与否则无关紧要: 来自marshal.getactiveobject的异常

System.Runtime.InteropServices.COMException (0x800401E3); Operation unavailable (Exception from HRESULT: 0x800401E3 (MK_E_UNAVAILABLE))
at System.Runtime.InteropServices.Marshal.GetActiveObject( bla bla bla)

我写了一个小测试应用程序(Windows应用程序)来做同样的事情,它按预期工作。如果excel正在运行,它将返回对excel实例的引用,否则返回null。它从不抛出异常。为什么插件每次抛出异常?关于esri addins的事情? (这是arcmap的补充)

对此已经好几天了,任何帮助都表示赞赏。谢谢!

0 个答案:

没有答案