locked
[Outlook 2007] Supprimer un élément custom du menu Outlook à la fermeture de celui-ci RRS feed

  • Question

  • Bonjour,

    J'ajoute un élément à mon menu d'Outlook 2007 comme sur les tutoriels disponibles sous MSDN (http://msdn.microsoft.com/en-us/library/bb410039.aspx : RemoveMenuBar()).

    Le problème est qu'ils nous proposent de supprimer le menu au démarrage d'Outlook pour ensuite en ajouter un autre. Nous avons essayé de reporter le code disponible dans notre événement Shutdown comme ci-dessous, mais notre ActiveExplorer() est null.

    private void RemoveMenuBar()
        {
          try
          {
            //Supprime le menu s'il existe.
            if (Application.ActiveExplorer() != null)
            {
              var foundMenu =
                (CommandBarButton)Application.ActiveExplorer().
                CommandBars.ActiveMenuBar.FindControl(MsoControlType.msoControlButton,
                                   missing,
                                   missing,
                                   missing,
                                   false);
    
              if (foundMenu != null)
                foundMenu.Delete();
            }
          }
          catch (System.Exception e)
          {
            MessageBox.Show(e.Message);
          }
        }
    

     

    Ici, on ne passe jamais la suppression, on saute directement on test de : Application.ActiveExplorer().

    N'y a-t-il pas moyen de pouvoir supprimer notre menu à la fermeture d'Outlook ? Je prends l'exemple au cas où l'add-in devait être désinstallé, il resterait le menu car il n'a pas été supprimé à la fermeture d'Outlook...

    Merci d'avance pour vos réponses !

    Cordialement,

    lundi 11 juillet 2011 13:48

Réponses

  • Bonjour,

     

    Vu le délai de ma réponse je ne sais pas si vous avez trouver une solution.

    Mais voici une proposition de solution pour avoir le  dernier activeExplorer différent de null dans votre  ShutDown :

    public partial class ThisAddIn
      {
        private Explorer _LastExplorer = null;
    
        private void ThisAddIn_Startup(object sender, System.EventArgs e)
        {
          this.Application.ActiveExplorer().Deactivate += new Outlook.ExplorerEvents_10_DeactivateEventHandler(ThisAddIn_Deactivate);
        }
    
        void ThisAddIn_Deactivate()
        {
          _LastExplorer = this.Application.ActiveExplorer();
          //throw new NotImplementedException();
        }
    
        private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
        {
          if (_LastExplorer != null)
          {
          }
        }
    
        #region VSTO generated code
    
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InternalStartup()
        {
          this.Startup += new System.EventHandler(ThisAddIn_Startup);
          this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
          
        }
    
        
        #endregion
      }
    

     


    Cordialement, Pascal.

    Développeur Wpf/SilverLight/WinPhone7

    dimanche 14 août 2011 08:33