Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 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 | | Calendrier |
|
|
| Interface avec Outlook | |
| | |
Auteur | Message |
---|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Interface avec Outlook Sam 13 Fév 2021 - 10:16 | |
| Je tente de créer une interface Panoramic <--> Outlook. Pour ma part, j'ai Outlook 2007 et je tente d'y accéder depuis Panoramic. J'ai obtenu de premiers résultats encourageants, et j'aimerais savoir ce que cela donne "sur le terrain". Pour les (mal)heureux utilisateurs de Outlook: Seriez-vous intéressés par faire de rapides essais de compatibilité pour moi ? Je n'ai que la version 2007, et je n'ai aucune idée ce que mon code peut donner avec d'autres versions de Outlook... Pour tester, il suffit de télécharger la version KGF.dll accessible sur mon site (via la signature de ce message), et de lancer le programme suivant (après avoir éventuellement adapté le chemin vers KGF.dll): - Code:
-
' test_Outlook_2007.bas
label creer, deplacer, agrandir, sortir
dim res%, POL%
main_menu 1 sub_menu 11 : parent 11,1 : caption 11,"Fichier" sub_menu 111 : parent 111,11 : caption 111,"Creer l'interface" : on_click 111,creer sub_menu 112 : parent 112,11 : caption 112,"Déplacer l'interface" : on_click 112,deplacer sub_menu 113 : parent 113,11 : caption 113,"Agrandir l'interface" : on_click 113,agrandir sub_menu 114 : parent 114,11 : caption 114,"-" sub_menu 115 : parent 115,11 : caption 115,"Sortir" : on_click 115,sortir
dll_on "KGF.dll"
end
sortir: POL% = dll_call1("DeleteOutlook",POL%) terminate return
creer: if POL%<>0 then return width 0,750 height 0,600 POL% = dll_call3("CreateOutlook",handle(0),10,10) return deplacer: if POL%=0 then return full_space 0 res% = dll_call3("LocateOutlook",POL%,0,0) return agrandir: if POL%=0 then return res% = dll_call5("ResizeOutlook",POL%,width_client(0),height_client(0),400,200) return
Mode d'emploi: - dans le menu "Fichiers", choisir "Créer" ==> vous obtiendrez un visuel similaire à une fenêtre Outlook simplifiée, dont la colonne de gauche se remplit immédiatement par l'arborescence des dossiers existants dans votre Outlook. Optionnellement: - dans le menu "Fichiers", choisir "Deplacer" ==> la form 0 se met en full_space et le visuel se place en (0,0) - dans le menu "Fichiers", choisir "Agrandir" ==> le visuel prend toute la fenêtre Actions dans le visuel: - un clic sur un des dossiers dans l'arborescence des dossiers ==> affiche la liste de mails contenus dans ce dossier, dans une liste en haut à droire de l'aorborescence des dossiers. Ces mails sont affichés par leur titre, leur "sujet". - un clic sur un des sujets de mail dans la liste en haut à droite ==> affiche l'expéditeur et son adresse mais dans une petite bande juste en-dessous de la liste de mails ==> affiche la liste des pièces jointes dans une combo juste en-dessous de l'affichage de l'expéditeur ==> affiche le corps du mail en version HTML en bas à droite dans un visualisateur (un WebBrowser) C'est en tout cas ce qui devrait se passer et ce qui se passe chez moi, avec Outlook 2007. Qu'en est-il chez vous ? Avec quelle version de Outlook ? Quelles sont les versions compatibles ou incompatibles ? Avez-vous une anomalie, un plantage ? Un rapide diagnostic serait utile, éventuellement avec une capture d'écran. Merci d'avance pour votre collaboration ! Actuellement, cette version NE MODIFIE RIEN ! Aucun danger !
| |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: Re: Interface avec Outlook Sam 13 Fév 2021 - 14:45 | |
| Ah, ça y est, ça marche, (dans un premier temps, c'était parce que je n'avais pas le dernière version KGF.dll) Alors, quand je crée l'interface, il y a plein d'éléments qui apparaissent dans « Dossiers », il n'y a que « Éléments supprimés » et « Courrier indésirable » qui contiennent quelque chose. Et quand on clique sur les éléments de droite, le contenu apparaît en bas. Notons que quand je clique sur le « - » de « Dossiers » pour en faire un « + », ça fait « Violation d'accès à l'adresse 04F51DAD dans le module KGF.dll, lecture de l'adresse 00000008 ». Ca a l'air d'un projet intéressant qui éviterait la lourdeur d'Outlook ! A quoi sert de déplacer l'interface ? Bravo pour cette recherche ! | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Interface avec Outlook Sam 13 Fév 2021 - 15:21 | |
| Merci d'avoir testé, jjn4 ! - Citation :
- Notons que quand je clique sur le « - » de « Dossiers » pour en faire un « + »,
ça fait « Violation d'accès à l'adresse 04F51DAD dans le module KGF.dll, lecture de l'adresse 00000008 ». Oups... je vais tester cela. - Citation :
- A quoi sert de déplacer l'interface ?
Ben... juste à changer la position de l'interface. Utile avant ou après un changement de dimensions. C'est juste pour pouvoir adapter la disposition d'une fenêtre dans le cas de changement de dimensions d'une fenêtre, en tirant un des bords, par exemple. Au fait, tu as quelle version de Outlook ? Je suppose que les dossiers autres que les deux que tu as cités, contiennent des éléments ? Et en cliquant dessus, rien ne s'affiche dans la liste en haut à droite ? | |
| | | Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: Interface avec Outlook Sam 13 Fév 2021 - 16:49 | |
| Bonjour à tous ! @Klaus Je ne suis pas un utilisateur d'Outlook. Je viens d'installer la version 2010 en 32 bits et j'ai créé une adresse mail provisoire pour effectuer des tests. (panoramic.outlook@free.fr) Après le choix du profil, j'ai ceci qui s'affiche : - Citation :
- - dans le menu "Fichiers", choisir "Deplacer"
==> la form 0 se met en full_space et le visuel se place en (0,0) C'est correct. - Citation :
- - dans le menu "Fichiers", choisir "Agrandir"
==> le visuel prend toute la fenêtre c'est correct. - Citation :
- - un clic sur un des dossiers dans l'arborescence des dossiers
==> affiche la liste de mails contenus dans ce dossier, dans une liste en haut à droire de l'aorborescence des dossiers. Ces mails sont affichés par leur titre, leur "sujet". C'est correct. - Citation :
- - un clic sur un des sujets de mail dans la liste en haut à droite
==> affiche l'expéditeur et son adresse mais dans une petite bande juste en-dessous de la liste de mails c'est correct. - Citation :
- - un clic sur un des sujets de mail dans la liste en haut à droite
==> affiche l'expéditeur et son adresse mais dans une petite bande juste en-dessous de la liste de mails
C'est correct. - Citation :
- ==> affiche la liste des pièces jointes dans une combo juste en-dessous de l'affichage de l'expéditeur
Certaines pièces jointes ne s'affichent pas. Peut-être celles qui comportent le caractère "espace" dans leur nom ? Je vais faire d'autres essais.
EDIT : C'est correct ! J'ai remarqué qu'Outlook supprimait les pièces jointes qu'il juge douteuses. - Citation :
- ==> affiche le corps du mail en version HTML en bas à droite dans un visualisateur (un WebBrowser)
C'est correct. Souhaites-tu des tests avec une version d'Outlook plus récente ? 2019 ? Exemple d'affichage chez moi. J'ai laissé la fenêtre en mode réduit. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Interface avec Outlook Sam 13 Fév 2021 - 17:43 | |
| Merci, Marc !
C'est déjà une bonne nouvelle que tout fonctionne avec Outlook 2010, sauf éventuellement la reconnaisance des pièces jointes, mais ça reste à vérifier. En tout cas, ce n'est pas lié à la présence d'espaces dans le nom de la pièce jointe.
D'autres versions de OutLook ? Oui, toute information est bonne à prendre : | |
| | | Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: Interface avec Outlook Sam 13 Fév 2021 - 17:48 | |
| Pardon Klaus, j'avais édité mon précédent message au sujet des pièces jointes. Tout est OK ! J'ai remarqué que c'est Outlook qui supprime les pièces jointes pouvant contenir des virus.
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Interface avec Outlook Sam 13 Fév 2021 - 17:57 | |
| Super ! Donc, tout est validé pour OL 2010.
Je suis en train de coder des USER_EVENT pour signaler au programme Panoramic la sélection d'un dossier, la sélection d'un mail ou le choix d'une pièce jointe. | |
| | | Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: Interface avec Outlook Sam 13 Fév 2021 - 19:10 | |
| @Klaus J'ai donc téléchargé la version d' Outlook 32bits 2019. J'ai accès à toutes les fonctions jusqu'au 18 février 2021. Et... bonne nouvelle ! Tout ce que tu as fait fonctionne bien ! Comme avec la version 2010 ! | |
| | | lepetitmarocain
Nombre de messages : 341 Age : 82 Localisation : Région Parisienne (à mon grand désespoir) Date d'inscription : 04/07/2018
| Sujet: Re: Interface avec Outlook Sam 13 Fév 2021 - 19:16 | |
| Bonjour Klaus, bonjour à tous.
Je viens de tester avec Outlook 2016, et tout fonctionne normalement
Bonne soirée à tous | |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: Re: Interface avec Outlook Sam 13 Fév 2021 - 19:35 | |
| C'est Outlook 2007, que j'ai. Non je n'ai rien d'autres dans les autres éléments du dossier...? Ah si, j'ai aussi Boîte de réception qui marche maintenant. Mais pas les autres, il faut dire que je n'utilise jamais Outlook. Je verrai demain plus en détail... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Interface avec Outlook Sam 13 Fév 2021 - 20:07 | |
| Super ! Donc, on a maintenant: 2007, 2010, 2016, 2019. C'est très encourangeant. Je continue de mon côté à pousser les fonctionnalités. Et voici une version qui apporte deux choses: - des USER_EVENT pour avertir le programme Panoramic - une fonction d'information pour récupérer les noms de dossiers, messages, expéditeurs, pièces jointes etc: - Code:
-
' test_Outlook_2007.bas
label creer, deplacer, agrandir, sortir, UserEvent
dim res%, POL%, s$ dim Dossier%, MailIndex%, PieceIndex%, Sujet$, Expediteur$, Adresse$
main_menu 1 sub_menu 11 : parent 11,1 : caption 11,"Fichier" sub_menu 111 : parent 111,11 : caption 111,"Creer l'interface" : on_click 111,creer sub_menu 112 : parent 112,11 : caption 112,"Déplacer l'interface" : on_click 112,deplacer sub_menu 113 : parent 113,11 : caption 113,"Agrandir l'interface" : on_click 113,agrandir sub_menu 114 : parent 114,11 : caption 114,"-" sub_menu 115 : parent 115,11 : caption 115,"Sortir" : on_click 115,sortir sub_menu 21 : parent 21,1 : caption 21,"Informations"
dll_on "KGF.dll"
on_user_event UserEvent
end
sortir: POL% = dll_call1("DeleteOutlook",POL%) terminate return
creer: if POL%<>0 then return width 0,750 height 0,600 POL% = dll_call4("CreateOutlook",handle(0),10,10,1) return deplacer: if POL%=0 then return full_space 0 res% = dll_call3("LocateOutlook",POL%,0,0) return agrandir: if POL%=0 then return res% = dll_call5("ResizeOutlook",POL%,width_client(0),height_client(0),400,200) return UserEvent: ' message "UserEvent: WPARAM="+right$("0000000"+hex$(USER_EVENT_WPARAM),8)+" LPARAM="+right$("0000000"+hex$(USER_EVENT_LPARAM),8) if bin_and(USER_EVENT_WPARAM,hex("FF000000"))=hex("13000000") : ' est-ce un USER_EVENT de Outlook ?
if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00010000") : ' est-ce une sélection de dossier ? Dossier% = USER_EVENT_LPARAM s$ = string$(200," ") res% = dll_call6("GetOutlookInformation",POL%,1,0,adr(s$),0,0) s$ = trim$(s$) message "Dossier choisi: "+s$ end_if if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00020000") : ' est-ce une sélection de mail ? MailIndex% = USER_EVENT_LPARAM Sujet$ = string$(200," ") Expediteur$ = string$(200," ") Adresse$ = string$(200," ") res% = dll_call6("GetOutlookInformation",POL%,2,USER_EVENT_LPARAM,adr(Sujet$),adr(Expediteur$),adr(Adresse$)) Sujet$ = trim$(Sujet$) Expediteur$ = trim$(Expediteur$) Adresse$ = trim$(Adresse$) message "Mail choisi: "+Sujet$+chr$(13)+chr$(10)+"De: "+Expediteur$+" Mail: "+Adresse$ end_if if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00030000") : ' est-ce une sélection de pièce jointe ? PieceIndex% = USER_EVENT_LPARAM s$ = string$(200," ") res% = dll_call6("GetOutlookInformation",POL%,3,PieceIndex%,adr(s$),0,0) s$ = trim$(s$) message "Pièce jointe: "+s$ end_if end_if return
Il faut bien sûr recharger KGF.dll. Ca commence à prendre forme et ça me motive, maintenant que je sais que la compatibilité avec plusieurs versions de Outlook est bien au rendez-vous. | |
| | | Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: Interface avec Outlook Sam 13 Fév 2021 - 21:02 | |
| Tout est ok !
Que ce soit la sélection d'un dossier, d'un mail ou d'une pièce jointe, le retour se fait correctement dans Panoramic.
Les informations "Sujet", "Expéditeur" et "Adresse" sont correctes.
Bonne continuation !
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Interface avec Outlook Lun 15 Fév 2021 - 16:41 | |
| Voici une nouvelle version, avec KGF.dll à télécharger sur mon site (dans ma siganture). Elle apporte: - correction d'un bug dans le positionnement de l'interface - dans l'aroborescence des dossiers, le dossier sélectionné reste marqué sur fond bleu - un menu "Navigation" apparaît avec une ligne navigant vers le dossier "Boîte de réception" (le nom est paramétrable dans une chaîne de caractères) - remplacement de la simple liste des objets par un tableau avec les colonnes suivantes: date, heure, expéditeur, objet - un clic dans une ligne, quelque soit la colonne, sélectionne ce mail - ne plus afficher dans la liste des dossiers des lignes non adaptées comme "Contacts" etc Voici le programme de démo assorti: - Code:
-
' test_Outlook_2007.bas
label creer, deplacer, agrandir, sortir, UserEvent label navigation_reception
dim res%, POL%, s$ dim Dossier%, MailIndex%, PieceIndex%, Sujet$, Expediteur$, Adresse$
main_menu 1 sub_menu 11 : parent 11,1 : caption 11,"Fichier" sub_menu 111 : parent 111,11 : caption 111,"Creer l'interface" : on_click 111,creer sub_menu 112 : parent 112,11 : caption 112,"Déplacer l'interface" : on_click 112,deplacer sub_menu 113 : parent 113,11 : caption 113,"Agrandir l'interface" : on_click 113,agrandir sub_menu 114 : parent 114,11 : caption 114,"-" sub_menu 115 : parent 115,11 : caption 115,"Sortir" : on_click 115,sortir sub_menu 21 : parent 21,1 : caption 21,"Navigation" sub_menu 211 : parent 211,21 : caption 211,"Boite de réception" : on_click 211,navigation_reception
dll_on "KGF.dll"
on_user_event UserEvent
end
sortir: POL% = dll_call1("DeleteOutlook",POL%) terminate return
creer: if POL%<>0 then return width 0,750 height 0,600 POL% = dll_call4("CreateOutlook",handle(0),10,10,1) return deplacer: if POL%=0 then return full_space 0 res% = dll_call3("LocateOutlook",POL%,0,0) return agrandir: if POL%=0 then return res% = dll_call5("ResizeOutlook",POL%,width_client(0),height_client(0),400,200) return UserEvent: ' message "UserEvent: WPARAM="+right$("0000000"+hex$(USER_EVENT_WPARAM),8)+" LPARAM="+right$("0000000"+hex$(USER_EVENT_LPARAM),8) if bin_and(USER_EVENT_WPARAM,hex("FF000000"))=hex("13000000") : ' est-ce un USER_EVENT de Outlook ?
if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00010000") : ' est-ce une sélection de dossier ? Dossier% = USER_EVENT_LPARAM s$ = string$(200," ") res% = dll_call6("GetOutlookInformation",POL%,1,0,adr(s$),0,0) s$ = trim$(s$) message "Dossier choisi: "+s$ end_if if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00020000") : ' est-ce une sélection de mail ? MailIndex% = USER_EVENT_LPARAM Sujet$ = string$(200," ") Expediteur$ = string$(200," ") Adresse$ = string$(200," ") res% = dll_call6("GetOutlookInformation",POL%,2,USER_EVENT_LPARAM,adr(Sujet$),adr(Expediteur$),adr(Adresse$)) Sujet$ = trim$(Sujet$) Expediteur$ = trim$(Expediteur$) Adresse$ = trim$(Adresse$) message "Mail choisi: "+Sujet$+chr$(13)+chr$(10)+"De: "+Expediteur$+" Mail: "+Adresse$ end_if if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00030000") : ' est-ce une sélection de pièce jointe ? PieceIndex% = USER_EVENT_LPARAM s$ = string$(200," ") res% = dll_call6("GetOutlookInformation",POL%,3,PieceIndex%,adr(s$),0,0) s$ = trim$(s$) message "Pièce jointe: "+s$ end_if end_if return navigation_reception: s$ = "Boîte de réception" res% = dll_call2("SelectOutl ookFolder",POL%,adr(s$)) return
Prochaine étape: tri du tableau des mails par un clic sur l'entête d'une colonne...EDIT 16/02/2021 à 0h42:Finalement, le tri des colonnes était très simple. KGF.dll inclut maintenant cette fonctionalité. Je suis en train de coder l'extraction des pièces jointes... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Interface avec Outlook Jeu 18 Fév 2021 - 0:29 | |
| Et voilà - on peut extraire les pièces jointes. Dans le programme de démo adapté à ces fins, l suffit de sélectionner une des pièces jointes (s'il y en a...) dans la combo juste au-dessus du corps du mail. Un dialogue s'ouvre alors pour confirmer l'extraction de la pièce jointe. Si c'est accepté, la pièce sera extraite avec le même nom dans le dissoer du programme EXE en cours. Ce dossier est codé dans le programme de démo et peut être modifié à volonté. On peut maintenant trier le tableau des mails en cliquant sur le titre des colonnes du tableau des mails, et tout le tableau sera trié selon cette colonne. En tri ascendant d'abord, et un autre clic effectue un tri descendant. Ceci quelque soit la colonne. EDIT 18/02/2021 à 11h30:Le programme de démo a maintenant un 3ème menu: "Informations". Les 3 lignes de ce menu permettent de récupérer la liste des dossiers sous différents formats, point de départ pour de futures interventions sur Outlook. On peut en particulier retourner les "objets" désignant chaque dossier (sous forme d'une liste chargée dans un objet MEMO ou LIST). Chaque objet est en fait une valeur numérique unique, et il suffira ensuite de passer cette valeur sous forme de valeur integer (via la fonction val(item_read$(memo%,indice_choisi%) ) pour accéder à toutes les informations du dossier choisi (ses mails, ses sous-dossiers etc). Il faut bien sûr recharger KGF.dll. Voici le programme de démo: - Code:
-
' test_Outlook_2007.bas
label creer, deplacer, agrandir, sortir, UserEvent label navigation_reception, information_dossiers_1, information_dossiers_2, information_dossiers_3
dim res%, POL%, s$ dim Dossier%, MailIndex%, PieceIndex%, Sujet$, Expediteur$, Adresse$
main_menu 1 sub_menu 11 : parent 11,1 : caption 11,"Fichier" sub_menu 111 : parent 111,11 : caption 111,"Creer l'interface" : on_click 111,creer sub_menu 112 : parent 112,11 : caption 112,"Déplacer l'interface" : on_click 112,deplacer sub_menu 113 : parent 113,11 : caption 113,"Agrandir l'interface" : on_click 113,agrandir sub_menu 114 : parent 114,11 : caption 114,"-" sub_menu 115 : parent 115,11 : caption 115,"Sortir" : on_click 115,sortir sub_menu 21 : parent 21,1 : caption 21,"Navigation" sub_menu 211 : parent 211,21 : caption 211,"Boite de réception" : on_click 211,navigation_reception sub_menu 31 : parent 31,1 : caption 31,"Informations" sub_menu 311 : parent 311,31 : caption 311,"Liste des dossiers - noms" : on_click 311,information_dossiers_1 sub_menu 312 : parent 312,31 : caption 312,"Liste des dossiers - objets" : on_click 312,information_dossiers_2 sub_menu 313 : parent 313,31 : caption 313,"Liste des dossiers - noms et objets" : on_click 313,information_dossiers_3 memo 1001 : hide 1001 : bar_both 1001
dll_on "KGF.dll"
on_user_event UserEvent
end
sortir: POL% = dll_call1("DeleteOutlook",POL%) terminate return
creer: if POL%<>0 then return width 0,750 height 0,600 POL% = dll_call4("CreateOutlook",handle(0),10,10,1) return deplacer: if POL%=0 then return full_space 0 res% = dll_call3("LocateOutlook",POL%,0,0) return agrandir: if POL%=0 then return res% = dll_call5("ResizeOutlook",POL%,width_client(0),height_client(0),400,200) return UserEvent: ' message "UserEvent: WPARAM="+right$("0000000"+hex$(USER_EVENT_WPARAM),8)+" LPARAM="+right$("0000000"+hex$(USER_EVENT_LPARAM),8) if bin_and(USER_EVENT_WPARAM,hex("FF000000"))=hex("13000000") : ' est-ce un USER_EVENT de Outlook ?
if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00010000") : ' est-ce une sélection de dossier ? Dossier% = USER_EVENT_LPARAM s$ = string$(200," ") res% = dll_call6("GetOutlookInformation",POL%,1,0,adr(s$),0,0) s$ = trim$(s$) message "Dossier choisi: "+s$ end_if if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00020000") : ' est-ce une sélection de mail ? MailIndex% = USER_EVENT_LPARAM Sujet$ = string$(200," ") Expediteur$ = string$(200," ") Adresse$ = string$(200," ") res% = dll_call6("GetOutlookInformation",POL%,2,USER_EVENT_LPARAM,adr(Sujet$),adr(Expediteur$),adr(Adresse$)) Sujet$ = trim$(Sujet$) Expediteur$ = trim$(Expediteur$) Adresse$ = trim$(Adresse$) message "Mail choisi: "+Sujet$+chr$(13)+chr$(10)+"De: "+Expediteur$+" Mail: "+Adresse$ end_if if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00030000") : ' est-ce une sélection de pièce jointe ? PieceIndex% = USER_EVENT_LPARAM s$ = string$(200," ") res% = dll_call6("GetOutlookInformation",POL%,3,PieceIndex%,adr(s$),0,0) s$ = trim$(s$) if message_confirmation_yes_no("Enregistrer la pièce jointe: "+s$)=1 s$ = file_extract_path$(param_value$(0))+s$ : ' extraure la pièce jointe dans le dossier du programme res% = dll_call4("ExtractOutlookAttachment",POL%,0,PieceIndex%,adr(s$)) if res%=0 message "Pièce jointe extraite dans:"+chr$(13)+chr$(10)+s$ else message "Erreur en extraction de pièce jointe" end_if end_if end_if end_if return navigation_reception: s$ = "Boîte de réception" res% = dll_call2("SelectOutlookFolder",POL%,adr(s$)) return information_dossiers_1: clear 1001 res% = dll_call3("GetOutlookFolderList",POL%,0,handle(1001)) message text$(1001) return
information_dossiers_2: clear 1001 res% = dll_call3("GetOutlookFolderList",POL%,1,handle(1001)) message text$(1001) return
information_dossiers_3: clear 1001 res% = dll_call3("GetOutlookFolderList",POL%,2,handle(1001)) message text$(1001) return
| |
| | | Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: Interface avec Outlook Jeu 18 Fév 2021 - 11:55 | |
| "… le dossier sélectionné reste marqué sur fond bleu…" : Testé, Ok ! "… "Navigation" apparaît avec une ligne navigant vers le dossier "Boîte de réception"…" : Testé, Ok ! "… remplacement de la simple liste des objets par un tableau avec les colonnes suivantes: date, heure, expéditeur, objet…" : Testé, Ok ! "… un clic dans une ligne, quelque soit la colonne, sélectionne ce mail…" : Testé, Ok ! "… on peut extraire les pièces jointes…" : Testé, Ok ! "… en tri ascendant d'abord, et un autre clic effectue un tri descendant…" : Testé, Ok ! "… le programme de démo a maintenant un 3ème menu: "Informations"…" : Testé, Ok !
Aucun dysfonctionnement trouvé, tout est bon sur ma config : Outlook2019 + W10.
Bonne continuation ! | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Interface avec Outlook Jeu 18 Fév 2021 - 12:34 | |
| Merci, Marc ! C'est rassurant de voir la compatibilité ascendante, ce qui ne va pas forcément de soi.
Donc, je continue... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Interface avec Outlook Jeu 18 Fév 2021 - 13:15 | |
| Etape suivante: le menu "Informations" contient 3 nouvelles options pour récupérer la liste des mails du dossier sélectionné (mails affichés dans le tableau en haut à droite), selon plusieurs formats. Voici le programme de démo qui va avec: - Code:
-
' test_Outlook_2007.bas
label creer, deplacer, agrandir, sortir, UserEvent label navigation_reception, information_dossiers_1, information_dossiers_2, information_dossiers_3 label information_mails_1, information_mails_2, information_mails_3
dim res%, POL%, s$ dim Dossier%, MailIndex%, PieceIndex%, Sujet$, Expediteur$, Adresse$
main_menu 1 sub_menu 11 : parent 11,1 : caption 11,"Fichier" sub_menu 111 : parent 111,11 : caption 111,"Creer l'interface" : on_click 111,creer sub_menu 112 : parent 112,11 : caption 112,"Déplacer l'interface" : on_click 112,deplacer sub_menu 113 : parent 113,11 : caption 113,"Agrandir l'interface" : on_click 113,agrandir sub_menu 114 : parent 114,11 : caption 114,"-" sub_menu 115 : parent 115,11 : caption 115,"Sortir" : on_click 115,sortir sub_menu 21 : parent 21,1 : caption 21,"Navigation" sub_menu 211 : parent 211,21 : caption 211,"Boite de réception" : on_click 211,navigation_reception sub_menu 31 : parent 31,1 : caption 31,"Informations" sub_menu 311 : parent 311,31 : caption 311,"Liste des dossiers - noms" : on_click 311,information_dossiers_1 sub_menu 312 : parent 312,31 : caption 312,"Liste des dossiers - objets" : on_click 312,information_dossiers_2 sub_menu 313 : parent 313,31 : caption 313,"Liste des dossiers - noms et objets" : on_click 313,information_dossiers_3 sub_menu 314 : parent 314,31 : caption 314,"-" sub_menu 315 : parent 315,31 : caption 315,"Liste des mails - noms" : on_click 315,information_mails_1 sub_menu 316 : parent 316,31 : caption 316,"Liste des mails - objets" : on_click 316,information_mails_2 sub_menu 317 : parent 317,31 : caption 317,"Liste des mails - noms et objets" : on_click 317,information_mails_3 memo 1001 : hide 1001 : bar_both 1001
dll_on "KGF.dll"
on_user_event UserEvent
end
sortir: POL% = dll_call1("DeleteOutlook",POL%) terminate return
creer: if POL%<>0 then return width 0,750 height 0,600 POL% = dll_call4("CreateOutlook",handle(0),10,10,1) return deplacer: if POL%=0 then return full_space 0 res% = dll_call3("LocateOutlook",POL%,0,0) return agrandir: if POL%=0 then return res% = dll_call5("ResizeOutlook",POL%,width_client(0),height_client(0),400,200) return UserEvent: ' message "UserEvent: WPARAM="+right$("0000000"+hex$(USER_EVENT_WPARAM),8)+" LPARAM="+right$("0000000"+hex$(USER_EVENT_LPARAM),8) if bin_and(USER_EVENT_WPARAM,hex("FF000000"))=hex("13000000") : ' est-ce un USER_EVENT de Outlook ?
if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00010000") : ' est-ce une sélection de dossier ? Dossier% = USER_EVENT_LPARAM s$ = string$(200," ") res% = dll_call6("GetOutlookInformation",POL%,1,0,adr(s$),0,0) s$ = trim$(s$) message "Dossier choisi: "+s$ end_if if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00020000") : ' est-ce une sélection de mail ? MailIndex% = USER_EVENT_LPARAM Sujet$ = string$(200," ") Expediteur$ = string$(200," ") Adresse$ = string$(200," ") res% = dll_call6("GetOutlookInformation",POL%,2,USER_EVENT_LPARAM,adr(Sujet$),adr(Expediteur$),adr(Adresse$)) Sujet$ = trim$(Sujet$) Expediteur$ = trim$(Expediteur$) Adresse$ = trim$(Adresse$) message "Mail choisi: "+Sujet$+chr$(13)+chr$(10)+"De: "+Expediteur$+" Mail: "+Adresse$ end_if if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00030000") : ' est-ce une sélection de pièce jointe ? PieceIndex% = USER_EVENT_LPARAM s$ = string$(200," ") res% = dll_call6("GetOutlookInformation",POL%,3,PieceIndex%,adr(s$),0,0) s$ = trim$(s$) if message_confirmation_yes_no("Enregistrer la pièce jointe: "+s$)=1 s$ = file_extract_path$(param_value$(0))+s$ : ' extraure la pièce jointe dans le dossier du programme res% = dll_call4("ExtractOutlookAttachment",POL%,0,PieceIndex%,adr(s$)) if res%=0 message "Pièce jointe extraite dans:"+chr$(13)+chr$(10)+s$ else message "Erreur en extraction de pièce jointe" end_if end_if end_if end_if return navigation_reception: s$ = "Boîte de réception" res% = dll_call2("SelectOutlookFolder",POL%,adr(s$)) return information_dossiers_1: clear 1001 res% = dll_call3("GetOutlookFolderList",POL%,0,handle(1001)) message text$(1001) return
information_dossiers_2: clear 1001 res% = dll_call3("GetOutlookFolderList",POL%,1,handle(1001)) message text$(1001) return
information_dossiers_3: clear 1001 res% = dll_call3("GetOutlookFolderList",POL%,2,handle(1001)) message text$(1001) return information_mails_1: clear 1001 res% = dll_call3("GetOutlookMailList",POL%,0,handle(1001)) message text$(1001) return
information_mails_2: clear 1001 res% = dll_call3("GetOutlookMailList",POL%,1,handle(1001)) message text$(1001) return
information_mails_3: clear 1001 res% = dll_call3("GetOutlookMailList",POL%,2,handle(1001)) message text$(1001) return
| |
| | | lepetitmarocain
Nombre de messages : 341 Age : 82 Localisation : Région Parisienne (à mon grand désespoir) Date d'inscription : 04/07/2018
| Sujet: Re: Interface avec Outlook Jeu 18 Fév 2021 - 13:46 | |
| Bonjour.
Je viens de tester la dernière mouture du programme.
je ne vois pas comment sélectionner la pièce jointe pour la sauvegarder.
Quelques suggestions pour la sauvegarde des pièces jointes.
Peux tu faire en sorte que les pièces jointes soient sauvegardées automatiquement suivant une règle précise.
Par exemple:
J' ai 2 fils qui envoient des photos régulièrement.
En faisant une règle simple (Outlook a des règles, mais incompréhensibles), serait il possible que les photos soient sauvegardées
dans des dossiers choisis par moi.
Donc sauvegarde avec règles ou manuellement.
Merci
Bonne journée | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Interface avec Outlook Jeu 18 Fév 2021 - 14:09 | |
| - Citation :
- je ne vois pas comment sélectionner la pièce jointe pour la sauvegarder.
Eh bien, tu cliques sur la petite flèche à droite de la combo contenant les pièces jointes, puis tu cliques sur une des pièces jointes. Un dialogue s'ouvre alors pour savoir sio tu veux saivegarder, et si oui, ma sauvegarde est faite. Voilà ce qui se passe su tu cliques sur une des pièces jointes: - Code:
-
PieceIndex% = USER_EVENT_LPARAM s$ = string$(200," ") res% = dll_call6("GetOutlookInformation",POL%,3,PieceIndex%,adr(s$),0,0) s$ = trim$(s$) if message_confirmation_yes_no("Enregistrer la pièce jointe: "+s$)=1 s$ = file_extract_path$(param_value$(0))+s$ : ' extraire la pièce jointe dans le dossier du programme res% = dll_call4("ExtractOutlookAttachment",POL%,0,PieceIndex%,adr(s$)) if res%=0 message "Pièce jointe extraite dans:"+chr$(13)+chr$(10)+s$ else message "Erreur en extraction de pièce jointe" end_if end_if
La variable USER_EVENT_LPARAM contient l'indice de la pièce jointe dans la liste des pièces jointes (1, 2, ...). C'est donc cette valeur qui est passée à la fonction ExtractOutlookAttachment pour sélectionner la pièce. Mais tu peux très bien faire une boucle pour mes extraire toutes... Tu vois que mon programme de démo utilise le dossier d'origine du programme pour enregister les pièces jointes. Mais tu peux très bien utiliser un SAVE_DIALOG, ou tout autre moyen, pour choisir le dossier de ton choix. L'important, c'est de passer ce dossier à la fonction par adr(nom_de_variable$). - Citation :
- Peux tu faire en sorte que les pièces jointes soient sauvegardées automatiquement suivant une règle précise
Le code présenté est juste un programme de démo, pas une application complète. Ce cpdemontre simplement les fonctionnalités des fonctions que je suis en train de créer. Il revient à toi de créer ta propre application, utilisant ces fonctions, pour développer des possibilités qui te sont personnelles. Mais à ta place, j'attendrais que la version officielle soit publiée, car, tant que je suis en version de démo en quête de retour des Panoramiciens pour évaluer la portabilité de ces fonctions pour les différentes versions de Outlook, le format d'appel de ces fonctions peut changer, leur fonctionnement interne peut être redéfini - bref, c'est une version pré-alpha. Pas une version de production. | |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: Re: Interface avec Outlook Jeu 18 Fév 2021 - 14:39 | |
| Eh, eh, ça fait un moment que je n'avais pas regardé... J'ai essayé les nouveautés. Je vois que ça se développe. C'est intéressant de voir si on peut arriver à un Outlook maison en panoramic plus léger et plus facilement maîtrisable... Continue, c'est superbe ! | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Interface avec Outlook Jeu 18 Fév 2021 - 14:47 | |
| Merci, jjn4 !
Pour le moment, j'approfondis un peu ce que l'on peut en extraire comme informations. Après, je vais tenter le premières actions: déplacer un mail dans un autre dossier, supprimer un mail, vider un dossier entier, répondre à un mail, transférer un mail à un autre destinataire. Puis, je vais récupérer le contenu des contacts, avec un critère de recherche souple.
Tu vois, j'ai du pain sur la planche ! | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Interface avec Outlook Jeu 18 Fév 2021 - 16:52 | |
| Nouvelle étape: Le menu "Informations" contient une nouvelle ligne qui retourne et affiche les informations sur le premier mail montgré dans la grille des mails en haut à droite. L'indice 1 ext choisi arbitrairement pour être sûr d'avoir quelque chose à afficher. Mais ça marche évidemment pour tout mail présent dans cette grille. Cela permet de récupérer par programme ces informations pour un mail donné et de les traiter en Panoramic. Exemple: historique par expéditeur, ... Voici le programme de démo, adapté à cette nouveauté: - Code:
-
' test_Outlook_2007.bas
label creer, deplacer, agrandir, sortir, UserEvent label navigation_reception, information_dossiers_1, information_dossiers_2, information_dossiers_3 label information_mails_1, information_mails_2, information_mails_3, information_mail1
dim res%, POL%, s$, mail% dim Dossier%, MailIndex%, PieceIndex%, Sujet$, Expediteur$, Adresse$
main_menu 1 sub_menu 11 : parent 11,1 : caption 11,"Fichier" sub_menu 111 : parent 111,11 : caption 111,"Creer l'interface" : on_click 111,creer sub_menu 112 : parent 112,11 : caption 112,"Déplacer l'interface" : on_click 112,deplacer sub_menu 113 : parent 113,11 : caption 113,"Agrandir l'interface" : on_click 113,agrandir sub_menu 114 : parent 114,11 : caption 114,"-" sub_menu 115 : parent 115,11 : caption 115,"Sortir" : on_click 115,sortir sub_menu 21 : parent 21,1 : caption 21,"Navigation" sub_menu 211 : parent 211,21 : caption 211,"Boite de réception" : on_click 211,navigation_reception sub_menu 31 : parent 31,1 : caption 31,"Informations" sub_menu 311 : parent 311,31 : caption 311,"Liste des dossiers - noms" : on_click 311,information_dossiers_1 sub_menu 312 : parent 312,31 : caption 312,"Liste des dossiers - objets" : on_click 312,information_dossiers_2 sub_menu 313 : parent 313,31 : caption 313,"Liste des dossiers - noms et objets" : on_click 313,information_dossiers_3 sub_menu 314 : parent 314,31 : caption 314,"-" sub_menu 315 : parent 315,31 : caption 315,"Liste des mails - noms" : on_click 315,information_mails_1 sub_menu 316 : parent 316,31 : caption 316,"Liste des mails - objets" : on_click 316,information_mails_2 sub_menu 317 : parent 317,31 : caption 317,"Liste des mails - noms et objets" : on_click 317,information_mails_3 sub_menu 318 : parent 318,31 : caption 318,"-" sub_menu 319 : parent 319,31 : caption 319,"Informations mail 1" : on_click 319,information_mail1 memo 1001 : hide 1001 : bar_both 1001
dll_on "KGF.dll"
on_user_event UserEvent
end
sortir: POL% = dll_call1("DeleteOutlook",POL%) terminate return
creer: if POL%<>0 then return width 0,750 height 0,600 POL% = dll_call4("CreateOutlook",handle(0),10,10,1) return deplacer: if POL%=0 then return full_space 0 res% = dll_call3("LocateOutlook",POL%,0,0) return agrandir: if POL%=0 then return res% = dll_call5("ResizeOutlook",POL%,width_client(0),height_client(0),400,200) return UserEvent: ' message "UserEvent: WPARAM="+right$("0000000"+hex$(USER_EVENT_WPARAM),8)+" LPARAM="+right$("0000000"+hex$(USER_EVENT_LPARAM),8) if bin_and(USER_EVENT_WPARAM,hex("FF000000"))=hex("13000000") : ' est-ce un USER_EVENT de Outlook ?
if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00010000") : ' est-ce une sélection de dossier ? Dossier% = USER_EVENT_LPARAM s$ = string$(200," ") res% = dll_call6("GetOutlookInformation",POL%,1,0,adr(s$),0,0) s$ = trim$(s$) message "Dossier choisi: "+s$ end_if if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00020000") : ' est-ce une sélection de mail ? MailIndex% = USER_EVENT_LPARAM Sujet$ = string$(200," ") Expediteur$ = string$(200," ") Adresse$ = string$(200," ") res% = dll_call6("GetOutlookInformation",POL%,2,USER_EVENT_LPARAM,adr(Sujet$),adr(Expediteur$),adr(Adresse$)) Sujet$ = trim$(Sujet$) Expediteur$ = trim$(Expediteur$) Adresse$ = trim$(Adresse$) message "Mail choisi: "+Sujet$+chr$(13)+chr$(10)+"De: "+Expediteur$+" Mail: "+Adresse$ end_if if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00030000") : ' est-ce une sélection de pièce jointe ? PieceIndex% = USER_EVENT_LPARAM s$ = string$(200," ") res% = dll_call6("GetOutlookInformation",POL%,3,PieceIndex%,adr(s$),0,0) s$ = trim$(s$) if message_confirmation_yes_no("Enregistrer la pièce jointe: "+s$)=1 s$ = file_extract_path$(param_value$(0))+s$ : ' extraure la pièce jointe dans le dossier du programme res% = dll_call4("ExtractOutlookAttachment",POL%,0,PieceIndex%,adr(s$)) if res%=0 message "Pièce jointe extraite dans:"+chr$(13)+chr$(10)+s$ else message "Erreur en extraction de pièce jointe" end_if end_if end_if end_if return navigation_reception: s$ = "Boîte de réception" res% = dll_call2("SelectOutlookFolder",POL%,adr(s$)) return information_dossiers_1: clear 1001 res% = dll_call3("GetOutlookFolderList",POL%,0,handle(1001)) message text$(1001) return
information_dossiers_2: clear 1001 res% = dll_call3("GetOutlookFolderList",POL%,1,handle(1001)) message text$(1001) return
information_dossiers_3: clear 1001 res% = dll_call3("GetOutlookFolderList",POL%,2,handle(1001)) message text$(1001) return information_mails_1: clear 1001 res% = dll_call3("GetOutlookMailList",POL%,0,handle(1001)) message text$(1001) return
information_mails_2: clear 1001 res% = dll_call3("GetOutlookMailList",POL%,1,handle(1001)) message text$(1001) return
information_mails_3: clear 1001 res% = dll_call3("GetOutlookMailList",POL%,2,handle(1001)) message text$(1001) return information_mail1: clear 1001 ' Pour la démo, on choisit le premier mail de la liste. ' Mais on pourrait prendre n'importe quel mail entre 1 et count(1001). res% = dll_call3("GetOutlookMailList",POL%,1,handle(1001)) mail% = val(item_read$(1001,1)) clear 1001 res% = dll_call3("GetOutlookMailInformation",POL%,mail%,handle(1001)) message text$(1001) return
En voici un exemple: Ces informations sont retournées dans un MEMO et donc utilisables, ligne par ligne. | |
| | | lepetitmarocain
Nombre de messages : 341 Age : 82 Localisation : Région Parisienne (à mon grand désespoir) Date d'inscription : 04/07/2018
| Sujet: Re: Interface avec Outlook Jeu 18 Fév 2021 - 20:14 | |
| Bonsoir Klaus.
Loin de moi l'idée de te donner des ordres pour faire ce dont j'aurai besoin.
C'etait seulement une idée pour ton programme, qui je vois bien n'est pas encore fini, puisque tu avances tous les jours.
Bonne soirée | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Interface avec Outlook Ven 19 Fév 2021 - 1:01 | |
| Nouvelle étape: J'ai implémenté la première action modifiant le contenu de Outlook ! Il s'agit d'une fonction qui vide complètement un dossier Outlook. Le programme de démo montre un nouveau lenu "Actions". Pour le moment, il contient une seule ligne: "Vider Courrier indésirable" Ca fait exactement ça: vider ce dossier. J'ai choisi ce dossier pour les besoins de la démo car il existe partout et ne contient probablement pas de choses utiles. Cependant, avant d'utiliser cette option, je vous commande de vérifier ! De toutes façons, le programme de démo demande une confirmation avant exécution. Après... c'est votre resposabilité. L'implémentation est faite par une fonction à laquelle on peut passer n'importe quel dossier. Mais, pour des raisons de sécurité, on ne passe pas le nom du dossier en chaîne de caractères. Il faut le passer en tant que "objet", tel que retourné par la fonction - Code:
-
res% = dll_call3("GetOutlookFolderList",POL%,2,handle(1001)) Elle retourne la liste de tous les dossiers dans un mémo, un dossier par ligne. Chaque ligne contient une valeur numérique au début, puis une virgule, puis le nom du dossier. La valeur numérique au début est "l'objet" qu'il faut passer à la fonction - Code:
-
res% = dll_call2("EmptyOutlookFolder",POL%,dossier%) Voilà le programme de démo: - Code:
-
' test_Outlook_2007.bas
label creer, deplacer, agrandir, sortir, UserEvent label navigation_reception, information_dossiers_1, information_dossiers_2, information_dossiers_3 label information_mails_1, information_mails_2, information_mails_3, information_mail1, action_vider1
dim res%, POL%, s$, s1$, mail%, i% dim Dossier%, MailIndex%, PieceIndex%, Sujet$, Expediteur$, Adresse$
main_menu 1 sub_menu 11 : parent 11,1 : caption 11,"Fichier" sub_menu 111 : parent 111,11 : caption 111,"Creer l'interface" : on_click 111,creer sub_menu 112 : parent 112,11 : caption 112,"Déplacer l'interface" : on_click 112,deplacer sub_menu 113 : parent 113,11 : caption 113,"Agrandir l'interface" : on_click 113,agrandir sub_menu 114 : parent 114,11 : caption 114,"-" sub_menu 115 : parent 115,11 : caption 115,"Sortir" : on_click 115,sortir sub_menu 21 : parent 21,1 : caption 21,"Navigation" sub_menu 211 : parent 211,21 : caption 211,"Boite de réception" : on_click 211,navigation_reception sub_menu 31 : parent 31,1 : caption 31,"Informations" sub_menu 311 : parent 311,31 : caption 311,"Liste des dossiers - noms" : on_click 311,information_dossiers_1 sub_menu 312 : parent 312,31 : caption 312,"Liste des dossiers - objets" : on_click 312,information_dossiers_2 sub_menu 313 : parent 313,31 : caption 313,"Liste des dossiers - noms et objets" : on_click 313,information_dossiers_3 sub_menu 314 : parent 314,31 : caption 314,"-" sub_menu 315 : parent 315,31 : caption 315,"Liste des mails - noms" : on_click 315,information_mails_1 sub_menu 316 : parent 316,31 : caption 316,"Liste des mails - objets" : on_click 316,information_mails_2 sub_menu 317 : parent 317,31 : caption 317,"Liste des mails - noms et objets" : on_click 317,information_mails_3 sub_menu 318 : parent 318,31 : caption 318,"-" sub_menu 319 : parent 319,31 : caption 319,"Informations mail 1" : on_click 319,information_mail1 sub_menu 41 : parent 41,1 : caption 41,"Actions" sub_menu 411 : parent 411,41 : caption 411,"Vider Courrier indésirable" : on_click 411,action_vider1 memo 1001 : hide 1001 : bar_both 1001
dll_on "KGF.dll"
on_user_event UserEvent
end
sortir: POL% = dll_call1("DeleteOutlook",POL%) terminate return
creer: if POL%<>0 then return width 0,750 height 0,600 POL% = dll_call4("CreateOutlook",handle(0),10,10,1) return deplacer: if POL%=0 then return full_space 0 res% = dll_call3("LocateOutlook",POL%,0,0) return agrandir: if POL%=0 then return res% = dll_call5("ResizeOutlook",POL%,width_client(0),height_client(0),400,200) return UserEvent: ' message "UserEvent: WPARAM="+right$("0000000"+hex$(USER_EVENT_WPARAM),8)+" LPARAM="+right$("0000000"+hex$(USER_EVENT_LPARAM),8) if bin_and(USER_EVENT_WPARAM,hex("FF000000"))=hex("13000000") : ' est-ce un USER_EVENT de Outlook ?
if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00010000") : ' est-ce une sélection de dossier ? Dossier% = USER_EVENT_LPARAM s$ = string$(200," ") res% = dll_call6("GetOutlookInformation",POL%,1,0,adr(s$),0,0) s$ = trim$(s$) message "Dossier choisi: "+s$ end_if if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00020000") : ' est-ce une sélection de mail ? MailIndex% = USER_EVENT_LPARAM Sujet$ = string$(200," ") Expediteur$ = string$(200," ") Adresse$ = string$(200," ") res% = dll_call6("GetOutlookInformation",POL%,2,USER_EVENT_LPARAM,adr(Sujet$),adr(Expediteur$),adr(Adresse$)) Sujet$ = trim$(Sujet$) Expediteur$ = trim$(Expediteur$) Adresse$ = trim$(Adresse$) message "Mail choisi: "+Sujet$+chr$(13)+chr$(10)+"De: "+Expediteur$+" Mail: "+Adresse$ end_if if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00030000") : ' est-ce une sélection de pièce jointe ? PieceIndex% = USER_EVENT_LPARAM s$ = string$(200," ") res% = dll_call6("GetOutlookInformation",POL%,3,PieceIndex%,adr(s$),0,0) s$ = trim$(s$) if message_confirmation_yes_no("Enregistrer la pièce jointe: "+s$)=1 s$ = file_extract_path$(param_value$(0))+s$ : ' extraure la pièce jointe dans le dossier du programme res% = dll_call4("ExtractOutlookAttachment",POL%,0,PieceIndex%,adr(s$)) if res%=0 message "Pièce jointe extraite dans:"+chr$(13)+chr$(10)+s$ else message "Erreur en extraction de pièce jointe" end_if end_if end_if end_if return navigation_reception: s$ = "Boîte de réception" res% = dll_call2("SelectOutlookFolder",POL%,adr(s$)) return information_dossiers_1: clear 1001 res% = dll_call3("GetOutlookFolderList",POL%,0,handle(1001)) message text$(1001) return
information_dossiers_2: clear 1001 res% = dll_call3("GetOutlookFolderList",POL%,1,handle(1001)) message text$(1001) return
information_dossiers_3: clear 1001 res% = dll_call3("GetOutlookFolderList",POL%,2,handle(1001)) message text$(1001) return information_mails_1: clear 1001 res% = dll_call3("GetOutlookMailList",POL%,0,handle(1001)) message text$(1001) return
information_mails_2: clear 1001 res% = dll_call3("GetOutlookMailList",POL%,1,handle(1001)) message text$(1001) return
information_mails_3: clear 1001 res% = dll_call3("GetOutlookMailList",POL%,2,handle(1001)) message text$(1001) return information_mail1: clear 1001 ' Pour la démo, on choisit le premier mail de la liste. ' Mais on pourrait prendre n'importe quel mail entre 1 et count(1001). res% = dll_call3("GetOutlookMailList",POL%,1,handle(1001)) mail% = val(item_read$(1001,1)) clear 1001 res% = dll_call3("GetOutlookMailInformation",POL%,mail%,handle(1001)) message text$(1001) return action_vider1: clear 1001 res% = dll_call3("GetOutlookFolderList",POL%,2,handle(1001)) s1$ = "" for i%=1 to count(1001) if instr(item_read$(1001,i%),"Courrier indésirable")>0 s1$ = item_read$(1001,i%) exit_for end_if next i% i% = instr(s1$,",") if i%=0 message "Dossier non trouvé" return end_if dossier% = val(left$(s1$,i%-1)) s$ = mid$(s1$,i%+1,len(s1$)) if message_confirmation_yes_no("Voulez-vous vraiment vider le dossier <"+s$+"> ?")<>1 then return res% = dll_call2("EmptyOutlookFolder",POL%,dossier%) if res%<0 message "Erreur en vidant le dossier <"+s$+">" else message "Le dossier <"+s$+"> a été vidé." end_if return
Je vais maintenant coder la récupération des contacts avant de passer à la création ou au tranfert d'un mail. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Interface avec Outlook Ven 19 Fév 2021 - 12:21 | |
| Nouvelle étape: On récupère maintenant tous les contacts ! Dans le menu Navigation,, il y a deux lignes supplémentaires: "Afficher les contacts" et "Cacher les contacts". Si les contacts sont affichés, c'est à la place de l'arborescence des dossiers. En haut, il y a un EDIT, vide initialement. Le reste de l'epace à droite est rempli par la liste des contacts, affichés par leur nom complet. Le EDIT en haut permet de filter les contacts: lors de la saisie d'un critère dans ce champ, les contacts affichés sont filtrés au fur et à mesure. Un clic sur un contact récupère l'ensemble des informations disponibles pour un contact. elles sont affichées dans un message, mais elles sont trop nombreuses pour tenir sur une page de message. Cependant, elles sont retournées dans un MEMO (incisible dans notre cas). Chaque information occupe 1 ligne du format: nom=information Ainsi, un programme Panoramic peut facilement extraire l'information souhaitée. Voici le programme de démo qui va avec: - Code:
-
' test_Outlook_2007.bas
label creer, deplacer, agrandir, sortir, UserEvent label navigation_reception, information_dossiers_1, information_dossiers_2, information_dossiers_3 label information_mails_1, information_mails_2, information_mails_3, information_mail1, action_vider1 label navigation_contacts_oui, navigation_contacts_non
dim res%, POL%, s$, s1$, mail%, i% dim Dossier%, MailIndex%, PieceIndex%, Sujet$, Expediteur$, Adresse$, Contact%
main_menu 1 sub_menu 11 : parent 11,1 : caption 11,"Fichier" sub_menu 111 : parent 111,11 : caption 111,"Creer l'interface" : on_click 111,creer sub_menu 112 : parent 112,11 : caption 112,"Déplacer l'interface" : on_click 112,deplacer sub_menu 113 : parent 113,11 : caption 113,"Agrandir l'interface" : on_click 113,agrandir sub_menu 114 : parent 114,11 : caption 114,"-" sub_menu 115 : parent 115,11 : caption 115,"Sortir" : on_click 115,sortir sub_menu 21 : parent 21,1 : caption 21,"Navigation" sub_menu 211 : parent 211,21 : caption 211,"Boite de réception" : on_click 211,navigation_reception sub_menu 212 : parent 212,21 : caption 212,"-" sub_menu 213 : parent 213,21 : caption 213,"Afficher les contacts" : on_click 213,navigation_contacts_oui sub_menu 214 : parent 214,21 : caption 214,"Cacher les contacts" : on_click 214,navigation_contacts_non sub_menu 31 : parent 31,1 : caption 31,"Informations" sub_menu 311 : parent 311,31 : caption 311,"Liste des dossiers - noms" : on_click 311,information_dossiers_1 sub_menu 312 : parent 312,31 : caption 312,"Liste des dossiers - objets" : on_click 312,information_dossiers_2 sub_menu 313 : parent 313,31 : caption 313,"Liste des dossiers - noms et objets" : on_click 313,information_dossiers_3 sub_menu 314 : parent 314,31 : caption 314,"-" sub_menu 315 : parent 315,31 : caption 315,"Liste des mails - noms" : on_click 315,information_mails_1 sub_menu 316 : parent 316,31 : caption 316,"Liste des mails - objets" : on_click 316,information_mails_2 sub_menu 317 : parent 317,31 : caption 317,"Liste des mails - noms et objets" : on_click 317,information_mails_3 sub_menu 318 : parent 318,31 : caption 318,"-" sub_menu 319 : parent 319,31 : caption 319,"Informations mail 1" : on_click 319,information_mail1 sub_menu 41 : parent 41,1 : caption 41,"Actions" sub_menu 411 : parent 411,41 : caption 411,"Vider Courrier indésirable" : on_click 411,action_vider1 memo 1001 : hide 1001 : bar_both 1001
dll_on "KGF.dll"
on_user_event UserEvent
end
sortir: POL% = dll_call1("DeleteOutlook",POL%) terminate return
creer: if POL%<>0 then return width 0,750 height 0,600 POL% = dll_call4("CreateOutlook",handle(0),10,10,1) return deplacer: if POL%=0 then return full_space 0 res% = dll_call3("LocateOutlook",POL%,0,0) return agrandir: if POL%=0 then return res% = dll_call5("ResizeOutlook",POL%,width_client(0),height_client(0),400,200) return UserEvent: ' message "UserEvent: WPARAM="+right$("0000000"+hex$(USER_EVENT_WPARAM),8)+" LPARAM="+right$("0000000"+hex$(USER_EVENT_LPARAM),8) if bin_and(USER_EVENT_WPARAM,hex("FF000000"))=hex("13000000") : ' est-ce un USER_EVENT de Outlook ?
if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00010000") : ' est-ce une sélection de dossier ? Dossier% = USER_EVENT_LPARAM s$ = string$(200," ") res% = dll_call6("GetOutlookInformation",POL%,1,0,adr(s$),0,0) s$ = trim$(s$) message "Dossier choisi: "+s$ end_if if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00020000") : ' est-ce une sélection de mail ? MailIndex% = USER_EVENT_LPARAM Sujet$ = string$(200," ") Expediteur$ = string$(200," ") Adresse$ = string$(200," ") res% = dll_call6("GetOutlookInformation",POL%,2,USER_EVENT_LPARAM,adr(Sujet$),adr(Expediteur$),adr(Adresse$)) Sujet$ = trim$(Sujet$) Expediteur$ = trim$(Expediteur$) Adresse$ = trim$(Adresse$) message "Mail choisi: "+Sujet$+chr$(13)+chr$(10)+"De: "+Expediteur$+" Mail: "+Adresse$ end_if if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00030000") : ' est-ce une sélection de pièce jointe ? PieceIndex% = USER_EVENT_LPARAM s$ = string$(200," ") res% = dll_call6("GetOutlookInformation",POL%,3,PieceIndex%,adr(s$),0,0) s$ = trim$(s$) if message_confirmation_yes_no("Enregistrer la pièce jointe: "+s$)=1 s$ = file_extract_path$(param_value$(0))+s$ : ' extraure la pièce jointe dans le dossier du programme res% = dll_call4("ExtractOutlookAttachment",POL%,0,PieceIndex%,adr(s$)) if res%=0 message "Pièce jointe extraite dans:"+chr$(13)+chr$(10)+s$ else message "Erreur en extraction de pièce jointe" end_if end_if end_if if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00040000") : ' est-ce une sélection de contact ? Contact% = USER_EVENT_LPARAM clear 1001 res% = dll_call3("GetOutlookContact",POL%,Contact%,handle(1001)) message text$(1001) end_if
end_if return navigation_reception: s$ = "Boîte de réception" res% = dll_call2("SelectOutlookFolder",POL%,adr(s$)) return navigation_contacts_non: res% = dll_call2("ShowOutlookContacts",POL%,0) return navigation_contacts_oui: res% = dll_call2("ShowOutlookContacts",POL%,1) return information_dossiers_1: clear 1001 res% = dll_call3("GetOutlookFolderList",POL%,0,handle(1001)) message text$(1001) return
information_dossiers_2: clear 1001 res% = dll_call3("GetOutlookFolderList",POL%,1,handle(1001)) message text$(1001) return
information_dossiers_3: clear 1001 res% = dll_call3("GetOutlookFolderList",POL%,2,handle(1001)) message text$(1001) return information_mails_1: clear 1001 res% = dll_call3("GetOutlookMailList",POL%,0,handle(1001)) message text$(1001) return
information_mails_2: clear 1001 res% = dll_call3("GetOutlookMailList",POL%,1,handle(1001)) message text$(1001) return
information_mails_3: clear 1001 res% = dll_call3("GetOutlookMailList",POL%,2,handle(1001)) message text$(1001) return information_mail1: clear 1001 ' Pour la démo, on choisit le premier mail de la liste. ' Mais on pourrait prendre n'importe quel mail entre 1 et count(1001). res% = dll_call3("GetOutlookMailList",POL%,1,handle(1001)) mail% = val(item_read$(1001,1)) clear 1001 res% = dll_call3("GetOutlookMailInformation",POL%,mail%,handle(1001)) message text$(1001) return action_vider1: clear 1001 res% = dll_call3("GetOutlookFolderList",POL%,2,handle(1001)) s1$ = "" for i%=1 to count(1001) if instr(item_read$(1001,i%),"Courrier indésirable")>0 s1$ = item_read$(1001,i%) exit_for end_if next i% i% = instr(s1$,",") if i%=0 message "Dossier non trouvé" return end_if dossier% = val(left$(s1$,i%-1)) s$ = mid$(s1$,i%+1,len(s1$)) if message_confirmation_yes_no("Voulez-vous vraiment vider le dossier <"+s$+"> ?")<>1 then return res% = dll_call2("EmptyOutlookFolder",POL%,dossier%) if res%<0 message "Erreur en vidant le dossier <"+s$+">" else message "Le dossier <"+s$+"> a été vidé." end_if return | |
| | | Contenu sponsorisé
| Sujet: Re: Interface avec Outlook | |
| |
| | | | Interface avec Outlook | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |