2016-09-21 75 views
1

感謝您的期待。當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

回答

1

檢查Application.Explorers.Count > 0。如果是,繼續。否則,訂閱Explorers.NewExplorer事件並在顯示資源管理器時在該事件處理程序中運行代碼。

+0

謝謝德米特里,我試圖訂閱NewExplorer事件,但它似乎永遠不會開火:'Globals.ThisAddIn.Application.Explorers.NewExplorer + = OnNewExplorer'。我是否正確地做了這件事?在此先感謝 –

+0

觸發事件的對象必須是活動的 - 您在由編譯器創建的臨時變量上設置事件處理程序。一旦它被GC發佈,就不會引發任何事件。將Explorers聲明爲全局變量/類變量,並在該變量上設置事件處理程序。 –

相關問題