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

Windows Forms Discussion :

[Visual Studio 2005 -C#][Addin Outlook 2003] Détecter l'ouverture d'une fenêtre Email


Sujet :

Windows Forms

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 3
    Points : 1
    Points
    1
    Par défaut [Visual Studio 2005 -C#][Addin Outlook 2003] Détecter l'ouverture d'une fenêtre Email
    Bonjour

    Je suis Débutant en C# et encore plus en POO.

    Je cherche à réaliser une barre d'outils dans Outlook 2003 à l'aide de VS2005 equipé VSTO2. Sur cette barre il y aura plusieurs boutons permettant la connexion et la manipulation d'une une base Mysql distante.

    Pour le moment j'ai trouvé comment réaliser l'accès aux données, ajouter une barre à l'ouverture d'Outlook, ajouter des boutons avec la gestion des évènements de ceux-ci.

    Mon problème est que je n'arrive pas à mettre une barre la ou je le souhaite, c'est a dire dans la fenêtre d'ajout d'email (dans outlook le bouton nouveau mail de la barre d'outils). J'ai besoin de mettre cette barre dans cette fenêtre et uniquement celle la.
    Je crois avoir compris que cette fenetre est un "inspector" et je pensais détecter l'évènement "nouvel inspector" afin de me positionner sur la fenêtre pour y mettre la barre d'outils. Mais je n'arrive pas mettre en place la détection d'évènements correctement, seuls quelques évènements fonctionnent et les autres me renvoient une erreur :
    "No overload for 'MonInspect_NewInspector' matches delegate 'Microsoft.Office.Interop.Outlook.InspectorsEvents_NewInspectorEventHandler'"

    j'ai cherché un peu partout pour avoir des renseignements sur les évènements au sein d'Outlook mais les exemples sont tjs les memes (création de mail, de contact et de tache) mais rien sur la détection d'évènement

    Auriez vous une aide sur la gestion des évènements Outlook (voire Office) et pouvez vous m'indiquez ce que signifient ce message (ce qu'est une surcharge, ce que veut déléguer).

    Mes connaissances sont limités, j'ai découvert Visual Studio .net, C# et POO en même temps et seulement depuis 1 semaine.
    Merci de votre compréhension.

    Julien

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Citation Envoyé par dwarfelvish
    Je crois avoir compris que cette fenetre est un "inspector" et je pensais détecter l'évènement "nouvel inspector" afin de me positionner sur la fenêtre pour y mettre la barre d'outils
    C'est la bonne technique.

    Montre nous ton code car normalement, lorsque tu tapes le += après le nom de l'évènement, si tu appuies 2 fois sur tab, il te génère le code nécessaire....

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Effectivement quand je fais += et tab ça me met bien la suite (j'avais remarqué et c'est comme ça que j'ai pu avancé), mais après ça ne fonctionne pas et je ne comprends pas trop pourquoi. Je mets ici les deux exemples de codes.


    Ce code ne fait rien, lorsque j'essaye d'ouvrir des fenetres dans Outlook
    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
     
    public partial class ThisApplication
    {
          private Outlook.Application MonOutlook;
          private Outlook.Inspector MonIns99;
     
          private void ThisApplication_Startup(object sender, System.EventArgs e)
          {
     
                //MonOutlook.Inspectors.NewInspector;
     
                Outlook.Inspectors MonInspect = null;
                MonInspect.NewInspector += new Microsoft.Office.Interop.Outlook.InspectorsEvents_NewInspectorEventHandler(MonInspect_NewInspector);
     
            }
     
            private void ThisApplication_Shutdown(object sender, System.EventArgs e)
            {
            }
     
     
            private void MonInspect_NewInspector(Microsoft.Office.Interop.Outlook.Inspector Inspector)
            {
                MessageBox.Show("Essai 2");
            }
     
    }

    Ce code là me met une erreur avant le lancement
    "No Overload for 'MonInspect_NewInspector' matches delegate 'Microsoft.Office.Interop.Outlook.InspectorsEvents_NewInspectorEventHandler'"

    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
     
    public partial class ThisApplication
    {
          private Outlook.Application MonOutlook;
          private Outlook.Inspector MonIns99;
     
          private void ThisApplication_Startup(object sender, System.EventArgs e)
          {
     
                //MonOutlook.Inspectors.NewInspector;
     
                Outlook.Inspectors MonInspect = null;
                MonInspect.NewInspector += new Microsoft.Office.Interop.Outlook.InspectorsEvents_NewInspectorEventHandler(MonInspect_NewInspector);
     
            }
     
            private void ThisApplication_Shutdown(object sender, System.EventArgs e)
            {
            }
     
     
            private void MonInspect_NewInspector(object sender, System.EventArgs e)
            {
                MessageBox.Show("Essai 1");
            }
     
    }
    Lors de mes recherches je suis tombé sur le site outlookcode.com et j'ai trouvé pas mal de choses qui me correspondait mais en faisant le test j'ai eu des messages d'erreur comme au dessus. Ensuite c'est un petit peu trop complexe pour moi en ce moment.

    Merci pour votre aide

  4. #4
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Citation Envoyé par dwarfelvish
    Ce code là me met une erreur avant le lancement
    "No Overload for 'MonInspect_NewInspector' matches delegate 'Microsoft.Office.Interop.Outlook.InspectorsEvents_NewInspectorEventHandler'"
    C'est normal que cela ne fonctionne pas car le délégué InspectorsEvents_NewInspectorEventHandler prend en paramètre un Microsoft.Office.Interop.Outlook.Inspector (comme dans ton 1er exemple qui marche) pas un object sender et System.EventArgs e


    Tu es sur que ton premier bout de code ne fonctionne pas / ne fais rien ?

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Thomas Lebrun
    Tu es sur que ton premier bout de code ne fonctionne pas / ne fais rien ?
    Ce bout de code je l'ai mis dans un projet seul, au départ il etait dans mon projet. Mais meme comme cela, ça ne marche pas.

    Au départ dans le projet global, il ne se passait rien, dans le projet seul maintenant il me met une erreur exception "La référence d'objet n'est pas définie à une instance d'un objet". même en capturant l'exception ça ne m'avance pas plus.
    Aurais tu quelques petites lignes qui permettent de detecter que la fenetre "nouveau mail" vient de se lancer ?

    EDIT :
    J'ai corrigé quelques trucs dans mon projet seul
    Je viens de trouver quelque chose, j'aimerais savoir si je fais bien ou c'est pas bien codé.

    Les modifications par rapport à la version précédente du code mise sur le forum sont symbolisées par le commentaire "Modif"

    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
     
    public partial class ThisApplication
        {
            private Outlook.Application MonOutlook; // Modif
            private Outlook.Inspectors MonInspect;
     
            private void ThisApplication_Startup(object sender, System.EventArgs e)
            {
                MonOutlook = new Outlook.Application(); // Modif
                MonInspect = (Outlook.InspectorsClass)MonOutlook.Inspectors; // Modif
                MonInspect.NewInspector += new Microsoft.Office.Interop.Outlook.InspectorsEvents_NewInspectorEventHandler(MonInspect_NewInspector);
            }
     
            private void MonInspect_NewInspector(Microsoft.Office.Interop.Outlook.Inspector Inspector)
            {
                MessageBox.Show("Essai 2");
            }
     
     
     
       }
    Cette version fonctionne, j'ai à l'ouverture de la fenêtre nouveau mail (par exemple) mon message "Essai 2" qui s'affiche.

    Est ce que je fais est "propre" ? vraiment Objet ?

    Merci à plus
    Julien

  6. #6
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Ah vi, j'avais pas vu que tu avais un objet à null avant

    C'est pas mal mais tu n'est pas obliger de faire un new Outlook.Application car tu es déjà dans une application Outlook.

    Tu dois povoir faire comme ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    private void ThisApplication_Startup(object sender, System.EventArgs e)
            {
                MonInspect = (Outlook.InspectorsClass)this.Application.Inspectors; // Modif
                MonInspect.NewInspector += new Microsoft.Office.Interop.Outlook.InspectorsEvents_NewInspectorEventHandler(MonInspect_NewInspector);
            }
     
            private void MonInspect_NewInspector(Microsoft.Office.Interop.Outlook.Inspector Inspector)
            {
                MessageBox.Show("Essai 2");
            }

    Attention, la syntaxte n'est peut-être pas bonne mais le principe est là

    MonInspect = (Outlook.InspectorsClass)this.Application.Inspectors; // Modif

Discussions similaires

  1. Détecter l'ouverture d'une fenêtre
    Par zooffy dans le forum Général JavaScript
    Réponses: 21
    Dernier message: 07/04/2011, 12h57
  2. Réponses: 4
    Dernier message: 28/03/2007, 13h47
  3. Cohabiter visual studio 2003 et visual studio 2005
    Par sylvain_34 dans le forum Framework .NET
    Réponses: 4
    Dernier message: 09/02/2007, 10h32
  4. Détecter l'ouverture d'une fenêtre
    Par Matt2094 dans le forum Delphi
    Réponses: 9
    Dernier message: 30/08/2006, 12h48
  5. Différence entre VS 2003 et Visual Studio 2005 ?
    Par beegees dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 16/11/2005, 10h14

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