如何设想Excel是由自动化(VSTO Addin上下文)

我尝试解决以下问题。

语境:

我正在运行一个VSTO Excel应用程序上下文插件,当MS Excel由其他可视化模式下的自动化进程启动时,我也会加载我的插件。

所以,现在需要知道MS Excel是否是由其他进程自动启动的

  • 的CreateObject()
  • ExcelApplicatoin.Visible = true

(“/自动化embedded”)

现在,我评估以下Excel属性:

ThisAddIn.Application.UserControl 

但是,当MS Excel在CreateObject期间启动时,属性也是“False”。

有没有人有任何想法来解决这个问题? 我没有其他物业发现解决这个问题。

提前致谢,

Sukram。

我认为可以使用cmd参数:

 bool isExcelStartedByAutomation = (Environment.GetCommandLineArgs().Contains("/automation") && Environment.GetCommandLineArgs().Contains("-Embedding")); 

但是,当MS Excel在CreateObject期间启动时,属性也是“False”。

看看MSDN中的UserControl属性描述:

如果应用程序可见或者由用户创build或启动,则为true。 如果通过使用CreateObject或GetObject函数以编程方式创build或启动应用程序,并且应用程序处于隐藏状态,则为False。

当对象的UserControl属性为False时,释放该对象的最后一个编程引用时释放该对象。 如果此属性为False,则Microsoft Excel在会话中的最后一个对象被释放时退出。

 If Application.UserControl Then MsgBox "This workbook was created by the user" Else MsgBox "This workbook was created programmatically" End If