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

Langage Delphi Discussion :

GetActiveOleObject et Outlook


Sujet :

Langage Delphi

  1. #1
    Membre expérimenté
    Avatar de retwas
    Homme Profil pro
    Développeur Java/Delphi
    Inscrit en
    Mars 2010
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java/Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 698
    Points : 1 608
    Points
    1 608
    Billets dans le blog
    4
    Par défaut GetActiveOleObject et Outlook
    Bonjour,

    Pour envoyer un email via Outlook je fait un : GetActiveOleObject('Outlook.Application')

    Sur mon PC en Win10 avec Office 2016, aucun soucis. Par contre sur certains poste cela ne renvoi rien .. (ça vole).

    Avez vous une idée du pourquoi ? (le poste qui a le problème est aussi en Win10 + Office 2016).

    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
                   repeat
                      GetOutlookApp(bOutlookInstance);
                      if not bOutlookInstance then
                      begin
                         //Si on abandonne on simule que l'on a trouvé oultook pour sortir de la boucle
                         // MAIS on dit que le resultat est FAUX
                         if MessageDlg('Microsoft Outlook doit être démarré avant de continuer.'
                                      +#13+#10+''+#13+#10
                                      +'Démarrer Microsoft Outlook puis cliquer sur "Réessayer"'+#13+#10+'Sinon cliquer sur "Abandonner"',
                                      mtWarning, [mbAbort, mbRetry], 0) = mrAbort then
                         begin
                            bOutlookInstance := true;
                            Result := false;
                         end;
                      end;
                   until bOutlookInstance;
    // et le code de la fonction
    function GetOutlookApp(var bFind : boolean) : OLEVariant;
    begin
       LogIntoFile('Récupération de l''application Outlook');
       bFind := false;
       result := Unassigned;
     
       try
          result := GetActiveOleObject('Outlook.Application'); // ca vole ici et bFind reste à False
          bFind  := true;
          LogIntoFile('Application Outlook trouvée');
       except
          LogIntoFile('Application Outlook non trouvé');
       end;
    end;
    "S'il n'existe pas d'object recensé pour le progId passé à la fonction GetActiveOleObject, celle-ci lève une exception EOleSysError avec le message "Opération non disponible"."
    Bien entendu Outlook est ouvert à chaque fois .. je ne comprend pas.

    Merci

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Est-ce que la version de Office 2016 est 32 bits sur les deux postes ?
    Si tu produits un EXE Delphi 32 bits, je ne suis pas sûr qu'il puisse voir un OLE 64 Bits et inversement ...

    As-tu essayé la piste du Focus comme mentionné dans "Problème pour s'attacher à l'Instance d'Application Office en cours d'exécution" ou dans "GetObject ou GetActiveObject ne trouve pas une application Office en cours d'exécution"

    Essaye via l'API GetActiveObject pour voir le contenu HRESULT (en espérant que le code d'erreur soit plus explicite que "Opération non disponible")
    En plus sur Google avec le HRESULT, on trouvera plus d'info !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre expérimenté
    Avatar de retwas
    Homme Profil pro
    Développeur Java/Delphi
    Inscrit en
    Mars 2010
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java/Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 698
    Points : 1 608
    Points
    1 608
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Est-ce que la version de Office 2016 est 32 bits sur les deux postes ?
    Si tu produits un EXE Delphi 32 bits, je ne suis pas sûr qu'il puisse voir un OLE 64 Bits et inversement ...

    Essaye via l'API GetActiveObject pour voir le contenu HRESULT (en espérant que le code d'erreur soit plus explicite que "Opération non disponible")
    En plus sur Google avec le HRESULT, on trouvera plus d'info !
    Sur mon poste Win10-64 et Office 2016-64 cela fonctionne.
    Mon collègue qui a le problème Win10-64 et Office 2016-32.

    L'exe de Delphi qui est généré est en 32 bits.

    Je viens de trouver cela aussi, le Running Object Table qui pourrait expliquer mon problème mais c'est un peu flou ..
    https://support.microsoft.com/en-us/kb/238610

    Je vais voir avec mon collègue si cela passe avec un Office 2016 en 64 bits.

    Merci

    EDIT: Je n'avais pas vu le reste de la réponse .. j'ai essayé le focus mais pas mieux, pour l'API ca s'utilise comment cette chose ? ..

  4. #4
    Membre expérimenté
    Avatar de retwas
    Homme Profil pro
    Développeur Java/Delphi
    Inscrit en
    Mars 2010
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java/Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 698
    Points : 1 608
    Points
    1 608
    Billets dans le blog
    4
    Par défaut
    Le HResult renvoi .. Unsigned

Discussions similaires

  1. Pièces jointes et Outlook 2000
    Par Nico118 dans le forum Outlook
    Réponses: 15
    Dernier message: 13/01/2011, 17h19
  2. Outlook bar Menu
    Par JCK dans le forum XMLRAD
    Réponses: 2
    Dernier message: 26/03/2003, 10h48
  3. []Problème avec les formulaires Outlook
    Par davidinfo dans le forum Outlook
    Réponses: 6
    Dernier message: 05/12/2002, 09h59
  4. [VB6] [Outlook] Imprimer un mail en VB
    Par der dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 12/09/2002, 14h20
  5. outlook bar
    Par camis dans le forum Composants VCL
    Réponses: 3
    Dernier message: 13/08/2002, 17h13

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