当Outlook完全加载时,我的Outlook插件(VSTO)如何检测?

问题描述:

感谢您的期待。当Outlook完全加载时,我的Outlook插件(VSTO)如何检测?

我正在开发一个Outlook插件,需要在加载Outlook时提示用户登录。我正在通过挂入ThisAddInStartup事件来完成此操作。

问题

不幸的是,在日志中对话框Outlook之前显示满载所以它仿佛Outlook未加载在用户看来,他们*登录该插件。

问题

是否有可以从只会火 Outlook已完全加载并且正在向用户显示我的插件代码内订阅的事件吗?

相关链接

Ready event in Microsoft Outlook 2010?(通过IDTExtensibility2关于使用StartupComplete事件的答案看起来很有希望,但我不知道如何实现它。任何建议有赞赏也。)

我都试过了。 。 。

我曾尝试以下,但是这会导致对话框也很快推出:

private void InternalStartup() 
     { 
      this.Startup += new System.EventHandler(ThisAddIn_Startup); 
      this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown); 
     } 

private void ThisAddIn_Startup(object sender, System.EventArgs e) 
     { 
      //Fire 3rd party code to launch log-in dialog here 
     } 
+0

对于引用的问题,请在该答案下添加注释,询问代码示例。 – Chris

检查Application.Explorers.Count > 0。如果是,继续。否则,订阅Explorers.NewExplorer事件并在显示资源管理器时在该事件处理程序中运行代码。

+0

谢谢德米特里,我试图订阅NewExplorer事件,但它似乎永远不会开火:'Globals.ThisAddIn.Application.Explorers.NewExplorer + = OnNewExplorer'。我是否正确地做了这件事?在此先感谢 –

+0

触发事件的对象必须是活动的 - 您在由编译器创建的临时变量上设置事件处理程序。一旦它被GC发布,就不会引发任何事件。将Explorers声明为全局变量/类变量,并在该变量上设置事件处理程序。 –