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 :

Outlook Account Management API : fonctionnement


Sujet :

API, COM et SDKs Delphi

  1. #1
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 26
    Points : 26
    Points
    26
    Par défaut Outlook Account Management API : fonctionnement
    Bonjour,
    Je travaille actuellement sur l'implémentation de l'API de gestion de comptes Outlook, afin de pouvoir par la suite importer leur profil au sein d'une autre application.
    Mon implémentation semble fonctionnelle, j'entend par là que delphi ne constate aucune erreur de compilation et que l'execution se déroule sans problème.
    MAIS ! Lorsque je tente de lister les comptes POP3, aucun n'est trouvé, alors qu'Outlook me certifie l'existence de plusieurs comptes de ce type, tout fraichement créés.
    Je pense que quelque chose m'échappe dans l'utilisation de l'API... voici donc mon code :
    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
    53
    54
    var
    AccountManager : IOlkAccountManager;
    AccountHelper : IOlkAccountHelper;
    AccountEnum : IOlkEnum;
    PAE : IUnknown;
    Result : HRESULT;
    compte : Cardinal;
    LPUK : LPUNKNOWN;
    begin
     
         Result := ActiveX.CoInitialize(nil);
         if Result <> S_OK then
         begin
            showmessage('Echec ActiveX.CoInitialize :'+IntToHex(Result, 8)); Application.Terminate;
         end;
     
         Result := ActiveX.CoCreateInstance(CLSID_OlkAccountManager,
         nil, CLSCTX_INPROC_SERVER, IID_IOlkAccountManager,
         AccountManager);
         if Result <> S_OK then
            showmessage('Echec de la création de l''instance :'+IntToHex(Result, 8));
     
         Result := AccountManager.Init(AccountHelper, OLK_ACCOUNT_NO_FLAGS);
         if Result <> S_OK then
            showmessage('Echec de l''initialisation de AccountManager :'+IntToHex(Result, 8));
     
         if AccountEnum <> nil then
            showmessage('ok');
     
         Result := AccountManager.EnumerateAccounts(@CLSID_OlkMail, @CLSID_OlkPOP3Account, OLK_ACCOUNT_NO_FLAGS, AccountEnum);
         if Result <> S_OK then
            showmessage('echec du listing des comptes :'+IntToHex(Result, 8));
     
         if AccountEnum <> nil then
            showmessage('ok2');
     
         Result := AccountEnum.Reset;
         if Result <> S_OK then
            showmessage('erreur AccountEnum.reset :' + IntToHex(Result, 8));
         Result := AccountEnum.GetNext(LPUK);
         if Result <> S_OK then
            showmessage('erreur AccountEnum.GetNext :'+IntToHex(Result, 8));
     
         compte := 1;
         Result := AccountEnum.GetCount(@compte);
         if Result <> S_OK then
            showmessage('erreur AccountEnum.GetCount :'+IntToHex(Result, 8));
     
         showmessage(inttostr(compte));
     
         AccountEnum := nil;
         AccountHelper := nil;
         AccountManager := nil;
         ActiveX.CoUninitialize;
    Le résultat de l'exécution est le suivant (les boites de dialogues effectivement affichées) :
    ok2
    erreur AccountEnum.GetNext :00000001
    0

    Note : l'erreur trouvée sur AccoutEnum.GetNext n'en est pas une. L'énumérateur est simplement arrivé à la fin de la liste (voir doc msdn).

    Nous arrivons donc aux questions :
    - Sauriez vous comment on implémente correctement cette API ?
    - Permet-elle comme je le crois de récupérer les informations propres aux comptes POP3, telles que l'adresse de messagerie, l'adresse du serveur smtp, ect... ou fais-je fausse route ?

    Merci de vos réponses.

  2. #2
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 26
    Points : 26
    Points
    26
    Par défaut
    La fonction IOlkEnum::GetFirst(); dont tu parles n'est pas documentée par msdn.
    http://msdn.microsoft.com/library/de...HV01155231.asp
    Ne t'es tu pas trompé ?

    Ah et merci pour la fonction 'format', je ne conaissait pas

  3. #3
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 434
    Points : 5 846
    Points
    5 846
    Par défaut
    salut

    si je me suis tromper c'est pour cela que j'ai retirer mon post avant que tu reponde

    en fait c'est valable pour les folder mes pas pour les account

    pour le format c'est gratuit
    j'adore cette fonction

    @+ Phil
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  4. #4
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 26
    Points : 26
    Points
    26
    Par défaut
    En cette nouvelle journée, une nouvelle question :
    Comment comparer deux TGUID ?
    Actuellement voilà ce que j'essaie de faire :
    soient deux TGUID IID_IOlkAccountHelper et IID_IUnknown... et le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if IID_IOlkAccountHelper = IID_IUnknown then
    <div style="margin-left:40px">showmessage('les TGUID sont les mêmes');</div>
    Avec ceci, mon cher Delphi me maintient que les deux TGUID sont de 'types incompatibles'. J'aimerais comprendre

    Merci de vos réponses,

Discussions similaires

  1. Réponses: 4
    Dernier message: 16/03/2010, 15h24
  2. tomcat manager ne fonctionne pas
    Par kitofe dans le forum Tomcat et TomEE
    Réponses: 0
    Dernier message: 28/08/2009, 11h10

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