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

API, COM et SDKs Delphi Discussion :

Automation avec Outlook quand il est déjà ouvert


Sujet :

API, COM et SDKs Delphi

  1. #1
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 675
    Points : 5 260
    Points
    5 260
    Par défaut Automation avec Outlook quand il est déjà ouvert
    Bonjour,

    Je fais des essais pour créer des dossier dans les différentes boites d'Outlook (Boîte de réception, Eléments envoyés et Brouillons).
    Ce code fonctionne si Outlook est fermé mais j'ai une exception avec le message "Échec de l’exécution du serveur" si Outlook est déjà ouvert.

    J'ai mis des messageBox un peu partout pour savoir où ça plante mais, j'en ai aucun qui apparaît. Ce qui signifie que ça plante sur
    Code Delphi : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    try 
       Outlook := GetActiveOleObject('Outlook.Application');
    except
       Outlook := CreateOleObject('Outlook.Application');
    end;


    Le code complet de ma procédure
    Code Delphi : 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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    procedure TestOutlook();
    var
        Outlook       :OleVariant;
        Mapi          :variant;
        Inbox, Sentbox, DraftBox  : Variant;
        Folder : Variant;
        i : Integer;
     
    const
      olFolderSentMail  = $00000005;  // Elément envoyés
      olFolderInbox = $00000006;      // Boîte de réception
      olFolderDrafts = $00000010;     // Brouillons
     
     
    begin
      try
        try
     
          try 
            Outlook := GetActiveOleObject('Outlook.Application');
          except
            Outlook := CreateOleObject('Outlook.Application');
          end;
     
          ShowMessage('1');
     
          Mapi := Outlook.GetNamespace('MAPI');
          ShowMessage('2');
          Inbox := Mapi.GetDefaultFolder(olFolderInbox);
          ShowMessage('3');
          Sentbox := Mapi.GetDefaultFolder(olFolderSentMail);
          ShowMessage('4');
          DraftBox := Mapi.GetDefaultFolder(olFolderDrafts);
          ShowMessage('5');
     
          Folder := Unassigned;
          for i := 0 to Inbox.Folders.Count - 1 do
          begin
            Folder := Inbox.Folders[i];
            if (Folder.Name = 'Toto dans Inbox') then
              Break;
          end;
     
          if (Folder = Unassigned) then
            Inbox.Folders.Add('Toto dans Inbox');
     
          ShowMessage('6');  
          Folder := Unassigned;
          for i := 0 to Sentbox.Folders.Count - 1 do
          begin
            Folder := Sentbox.Folders[i];
            if (Folder.Name = 'Toto dans Sentbox') then
              Break;
          end;
     
          if (Folder = Unassigned) then
            Sentbox.Folders.Add('Toto dans Sentbox');
     
          Folder := Unassigned;
          for i := 0 to DraftBox.Folders.Count - 1 do
          begin
            Folder := DraftBox.Folders[i];
            if (Folder.Name = 'Toto dans DraftBox') then
              Break;
          end;
     
          if (Folder = Unassigned) then
            DraftBox.Folders.Add('Toto dans DraftBox');
        except
          on E:Exception do
          begin
            ShowMessage('Outlook : ' + E.Message);
          end;
        end;
      finally
        Outlook := Unassigned;
        Mapi := Unassigned;
        Inbox := Unassigned;
        Sentbox := Unassigned;
        DraftBox := Unassigned;
        Folder := Unassigned;
      end;
    end;

    Je travaille avec Dephi 7 et Outlook 2010.

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 300
    Points
    11 300
    Billets dans le blog
    6
    Par défaut
    Et si tu essayes en déclarant var Outlook: Variant; ?
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  3. #3
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 388
    Points : 2 999
    Points
    2 999
    Par défaut
    pas le temps d'approfondir mais si réponse il y a, elle est surement ICI

  4. #4
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 300
    Points
    11 300
    Billets dans le blog
    6
    Par défaut
    Est-ce que ton application et l'Outlook déjà ouvert auraient des droits/profils utilisateurs différents ?
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  5. #5
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 675
    Points : 5 260
    Points
    5 260
    Par défaut
    Effectivement, mon Delphi est lancé avec des droit administrateur pour pouvoir utiliser un complément lié à SVN.
    J'aurai dû y penser, je m'était déjà fait avoir dans un complément Outlook appelant ce programme.

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

Discussions similaires

  1. Automation avec Outlook : Envoyer vers boîte d'envoi
    Par clickandgo dans le forum VBA Access
    Réponses: 8
    Dernier message: 05/02/2015, 00h34
  2. Fonction Automation avec Outlook ne marche plus
    Par clickandgo dans le forum VBA Access
    Réponses: 0
    Dernier message: 15/09/2014, 18h44
  3. [Toutes versions] Comment ajouter une piste mp3 à la playlist de VLC quand VLC est déja ouvert
    Par colin2 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/05/2013, 16h45
  4. Champ "Notes" automation avec outlook ?
    Par clickandgo dans le forum VBA Access
    Réponses: 4
    Dernier message: 10/05/2013, 19h20
  5. Affichage d'une image avec changement quand le pointeur est dessus
    Par mauriiice dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 04/09/2006, 20h21

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