IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VSTO .NET Discussion :

AddIn Outlook 2016 [Débutant]


Sujet :

VSTO .NET

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    septembre 2009
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2009
    Messages : 49
    Points : 43
    Points
    43
    Par défaut AddIn Outlook 2016
    Bonjour,

    J'ai développé un complément pour outlook 2016 qui fonctionne bien sauf dans 2 cas qui se ressemblent beaucoup :
    - lorsque j'ouvre un mail depuis mon bureau et que Outlook est fermé
    - lorsque je partage un document Word en tant que pièce jointe et que Outlook est fermé.

    Dans les deux cas, je ne passe pas dans le code de mon complément ...

    Pour info j'ai mis 3 à LoadBehavior dans la base des registres pour "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\Outlook\Addins\nom_plugin". Le plugin est installé pour tous les utilisateurs.

    Merci pour votre aide.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    septembre 2009
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2009
    Messages : 49
    Points : 43
    Points
    43
    Par défaut
    En fait je pense qu'il faut que j'arrive à récupérer le bouton d'envoie de mail quand Outlook est fermé et qu'il n'y a que la fenêtre d'envoie de mail ouverte.

  3. #3
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    juillet 2016
    Messages
    2 625
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2016
    Messages : 2 625
    Points : 10 301
    Points
    10 301
    Billets dans le blog
    21
    Par défaut
    Bonjour,

    Je pense qu'il serait utile de préciser ce que fait votre addin, à quel moment il doit se déclencher, et comment il est déclenché actuellement.
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    septembre 2009
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2009
    Messages : 49
    Points : 43
    Points
    43
    Par défaut
    Bonjour,

    Oui en effet cela peut aider.
    L'ors de l'envoie du mail, il modifie le mail pour que celui soit contenu dans une pièce jointe chiffrée.
    Pour la réception, j'ai ajouté un bouton dans le ruban pour lire le mail. Il n'y a pas de pb lors de la réception.

    Donc c'est lors de l'envoie quand Outlook n'est pas démarré que lors de l'envoie du mail, celui-ci est envoyé en clair.

    J'espère que c'est clair.

  5. #5
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    juillet 2016
    Messages
    2 625
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2016
    Messages : 2 625
    Points : 10 301
    Points
    10 301
    Billets dans le blog
    21
    Par défaut
    Citation Envoyé par P'tite_Lily Voir le message
    J'espère que c'est clair.
    C'est plus clair, mais cela manque encore une précision. "Lors de l'envoi du mail" est plutôt vague. Il nous faudrait savoir comment tu fais cela. Un petit bout de code serait le bienvenu !
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    septembre 2009
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2009
    Messages : 49
    Points : 43
    Points
    43
    Par défaut
    L'appel à la méthode de chiffrage est réalisé dans la méthode "application_ItemSend" mais lorsque je mets un point d’arrêt sur la première instruction, je ne passe pas dedans ... donc je pense que je me suis trompée dans l'un des deux extraits de code suivants, voir les deux ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
        /// InspectorWrapper des MailItem
        internal class MailItemWrapper : InspectorWrapper
        {
            // L'instance d'objet derrière l'Inspector qui est l'item courant
            public Outlook.MailItem Item { get; private set; }
     
            /// L'instance Outlook Inspector qui devra être géré 
            public MailItemWrapper(Outlook.Inspector inspector)
                : base(inspector)
            {
            }
     
            /// Appellé quand le wrapper a été initialisé
            protected override void Initialize()
            {
                // Obtenir l'item de l'Inspector courant
                Item = (Outlook.MailItem)Inspector.CurrentItem;
     
                // Attrape l'évènement d'ouverture de l'item
                Item.Open += new Outlook.ItemEvents_10_OpenEventHandler(Item_Open);
                // Attrape l'évènement de sauvegarde et d'envoi de l'item
                Item.Write += new Outlook.ItemEvents_10_WriteEventHandler(Item_Write);
     
    	    //Appel de l'évènement d'envoi de mail
                ((Outlook.ItemEvents_10_Event)Item).Send += new Outlook.ItemEvents_10_SendEventHandler(Item_Send);
            }
     
            /// Appelé quand l'item est visible et que l'interface utilisateur a été initialisé
            private void Item_Open(ref bool Cancel)
            {
                // 
            }
     
            /// Appelé quand l'item est sauvegardé ou envoyé
            private void Item_Write(ref bool Cancel)
            {
               //
            }
     
            /// Appelé quand l'item est envoyé dans le cadre d'un email
            private void Item_Send(ref bool Cancel)
            {
                // Vérifie la liste des Ribbon que contient Outlook
                ThisRibbonCollection ribbonCollection = Globals.Ribbons;
     
                // Le traitement est réalisé dans cette méthode
    	    Cancel = InlineResponse.getControler().application_ItemSend(Item);
             }
    }
    Avec InspectorWrapper défini comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    internal abstract class InspectorWrapper
        {
            // Notification d'évènement pour l'évènement InspectorWrapper.Closed
            // Cet évènement est levé quand un inspector a été fermé
            public event InspectorWrapperClosedEventHandler Closed;
     
            // L'identifiant unique qui identifie une fenêtre Inspector
            public Guid Id { get; private set; }
     
            // L'instance Outlook Inspector
            public Outlook.Inspector Inspector { get; private set; }
     
            /// L'instance Outlook Inspector qui devra être géré 
            public InspectorWrapper(Outlook.Inspector inspector)
            {
                Id = Guid.NewGuid();
                Inspector = inspector;
     
                // Enregistrement des InspectorEvent
                ((Outlook.InspectorEvents_10_Event)Inspector).Close += new Outlook.InspectorEvents_10_CloseEventHandler(Inspector_Close);
                ((Outlook.InspectorEvents_10_Event)Inspector).Activate += new Outlook.InspectorEvents_10_ActivateEventHandler(Activate);
                ((Outlook.InspectorEvents_10_Event)Inspector).Deactivate += new Outlook.InspectorEvents_10_DeactivateEventHandler(Deactivate);
                ((Outlook.InspectorEvents_10_Event)Inspector).BeforeMaximize += new Outlook.InspectorEvents_10_BeforeMaximizeEventHandler(BeforeMaximize);
                ((Outlook.InspectorEvents_10_Event)Inspector).BeforeMinimize += new Outlook.InspectorEvents_10_BeforeMinimizeEventHandler(BeforeMinimize);
                ((Outlook.InspectorEvents_10_Event)Inspector).BeforeMove += new Outlook.InspectorEvents_10_BeforeMoveEventHandler(BeforeMove);
                ((Outlook.InspectorEvents_10_Event)Inspector).BeforeSize += new Outlook.InspectorEvents_10_BeforeSizeEventHandler(BeforeSize);
                ((Outlook.InspectorEvents_10_Event)Inspector).PageChange += new Outlook.InspectorEvents_10_PageChangeEventHandler(PageChange);
     
                 // Initialize() appelé pour donner les wrappers dérivés
                Initialize();
           }
     
             protected virtual void Initialize() { }
     
            /// Cette Factory retourne l'InspectorWrapper spécifique ou null si ce n'est pas géré
            public static InspectorWrapper GetWrapperFor(Outlook.Inspector inspector, ThisAddIn thisAddIn)
            {
     
                // Récupération du messageClass en utilisant le binding
                string messageClass = (string)inspector.CurrentItem.GetType().InvokeMember("MessageClass", BindingFlags.GetProperty, null, inspector.CurrentItem, null);
     
                switch (messageClass)
                {
                    case "IPM.Note": // E-mail messages
                        return new MailItemWrapper(inspector);
                }
     
                // Pas de Wrapper trouvé
                return null;
            }
        }

  7. #7
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    juillet 2016
    Messages
    2 625
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2016
    Messages : 2 625
    Points : 10 301
    Points
    10 301
    Billets dans le blog
    21
    Par défaut
    Je ne suis pas en mesure de t'aider plus, ne connaissant pas l'API d'Outlook. Mais au moins, les éléments présentés devraient maintenant être suffisants si un connaisseur passe par ici
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    septembre 2009
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2009
    Messages : 49
    Points : 43
    Points
    43
    Par défaut
    Le problème ne provenait pas du wrapper comme je l'ai cru au début.
    Dans la méthode ThisAddIn_Startup appelé bien avant le wrapper, j'initialisait les vues lors du démarrage du plugin, hors comme Outlook n'était pas démarré, certaines de ses méthodes généraient des exceptions interrompant le bon fonctionnement du plugin.
    Une fois des tests ajouté notamment sur Application.ActiveExplorer qui était toujours null, tout se passe comme espéré.

    Voilà, j'espère que ses quelques lignes pourront aider des personnes à chercher ailleurs

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Addin Outlook - changer le serveur SMTP
    Par penchu dans le forum Windows Forms
    Réponses: 5
    Dernier message: 26/05/2011, 12h34
  2. Réponses: 1
    Dernier message: 22/01/2009, 11h23
  3. Addin Outlook 2007 avec VB
    Par Zachs dans le forum VB.NET
    Réponses: 0
    Dernier message: 21/01/2009, 12h20
  4. Addin Outlook fénêtre de sécurité
    Par lecyberax dans le forum C#
    Réponses: 4
    Dernier message: 16/07/2007, 18h08
  5. Réponses: 5
    Dernier message: 13/06/2007, 16h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo