如何设想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