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: Re: Interface avec Outlook Sam 20 Fév 2021 - 14:50 | |
| Nouvelle étape: On peut maintenant déplacer un mail d'un dossier dans un autre ! Pour cela, il faut: - sélectionner un mail (pour qu'il soit affiché dans le visualisateur en bas à droite) - dans le menu "Navigation", choisir la nouvelle ligne "Afficher le sélecteur des dossiers" ==> la liste des dossiers s'affiche sur fond jaune, sans aucun dossier présélectionné - cliquer sur le dossier de destination ==> il sera affiché sur fond bleu avec écriture blanche, mais rien ne se passe encore - cliquer sur le bouton "OK" ==> le mail est déplacé de son dossier d'origine ==> la liste entière des dossiers est rechargée ==> le dossier d'origine est sélectionné automatiquement ==> on constate que le mail visé a disparu de ce dossier - cliquer sur le dossier de destination ==> on voit que le mail a bien été déplacé dans ce dossier Dans certains cas, et je ne sais pas encore ce qui conditionne cela, Outlook refuse de déplacer un mail. Dans je cas, on message clair est affiché et rien n'est changé dans les listes et tableaux. 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, navigation_dossier_oui, navigation_dossier_non label action_deplacer
dim res%, POL%, s$, s1$, mail%, i% dim Dossier%, MailIndex%, PieceIndex%, Sujet$, Expediteur$, Adresse$, Contact%, MailChoisi%, DossierChoisi%
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 215 : parent 215,21 : caption 215,"Afficher le sélecteur des dossiers" : on_click 215,navigation_dossier_oui sub_menu 216 : parent 216,21 : caption 216,"Cacher le sélecteur des dossiers" : on_click 216,navigation_dossier_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 sub_menu 412 : parent 412,41 : caption 412,"Déplacer un mail" : on_click 412,action_deplacer 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," ") Dossier% = dll_call6("GetOutlookInformation",POL%,1,0,adr(s$),0,0) : ' dossier% contient l'objet du dossier 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," ") MailChoisi% = 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$+chr$(13)+chr$(10)+" Objet mail="+str$(MailChoisi%) 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$ : ' 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 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
if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00050000") : ' est-ce une sélection de dossier dans le sélecteur des dossiers ? DossierChoisi% = USER_EVENT_LPARAM : ' USER_EVENT_LPARAM contient l'objet Dossier s$ = string$(200," ") res% = dll_call6("GetOutlookInformation",POL%,6,DossierChoisi%,adr(s$),0,0) s$ = trim$(s$) message "Dossier choisi: "+s$ 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 navigation_dossier_oui: res% = dll_call2("ShowOutlookFolderSelector",POL%,1) return navigation_dossier_non: res% = dll_call2("ShowOutlookFolderSelector",POL%,0) 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 action_deplacer: if MailChoisi%=0 message "Aucun mail choisi" return end_if if DossierChoisi%=0 message "Aucun dossier choisi" return end_if res% = dll_call3("MoveOutlookMail",POL%,MailChoisi%,DossierChoisi%) MailChoisi% = 0 return
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Interface avec Outlook Dim 21 Fév 2021 - 1:19 | |
| J'ai réglé le problème qui m'obligeait de recharger tous les dossiers après un déplacement de mail. Donc, je republie la nouvelle étape: On peut maintenant déplacer un mail d'un dossier dans un autre ! Pour cela, il faut: - sélectionner un mail (pour qu'il soit affiché dans le visualisateur en bas à droite) - dans le menu "Navigation", choisir la nouvelle ligne "Afficher le sélecteur des dossiers" ==> la liste des dossiers s'affiche sur fond jaune, sans aucun dossier présélectionné - cliquer sur le dossier de destination ==> il sera affiché sur fond bleu avec écriture blanche, mais rien ne se passe encore - cliquer sur le bouton "OK" ==> le mail est déplacé de son dossier d'origine ==> la liste entière des dossiers est rechargée ==> le dossier d'origine est sélectionné automatiquement ==> on constate que le mail visé a disparu de ce dossier - cliquer sur le dossier de destination ==> on voit que le mail a bien été déplacé dans ce dossier Voici le programme de démo (mais il faut recharger KGF.dll): - 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, navigation_dossier_oui, navigation_dossier_non label action_deplacer
dim res%, POL%, s$, s1$, mail%, i% dim Dossier%, MailIndex%, PieceIndex%, Sujet$, Expediteur$, Adresse$, Contact%, MailChoisi%, DossierChoisi%
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 215 : parent 215,21 : caption 215,"Afficher le sélecteur des dossiers" : on_click 215,navigation_dossier_oui sub_menu 216 : parent 216,21 : caption 216,"Cacher le sélecteur des dossiers" : on_click 216,navigation_dossier_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 sub_menu 412 : parent 412,41 : caption 412,"Déplacer un mail" : on_click 412,action_deplacer 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," ") Dossier% = dll_call6("GetOutlookInformation",POL%,1,0,adr(s$),0,0) : ' dossier% contient l'objet du dossier 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," ") MailChoisi% = 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$+chr$(13)+chr$(10)+" Objet mail="+str$(MailChoisi%) 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$ : ' 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 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
if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00050000") : ' est-ce une sélection de dossier dans le sélecteur des dossiers ? DossierChoisi% = USER_EVENT_LPARAM : ' USER_EVENT_LPARAM contient l'objet Dossier s$ = string$(200," ") res% = dll_call6("GetOutlookInformation",POL%,6,DossierChoisi%,adr(s$),0,0) s$ = trim$(s$) message "Dossier choisi: "+s$ end_if
end_if return navigation_reception: s$ = "Boîte de réception" res% = dll_call3("SelectOutlookFolder",POL%,adr(s$),1) return navigation_contacts_non: res% = dll_call2("ShowOutlookContacts",POL%,0) return navigation_contacts_oui: res% = dll_call2("ShowOutlookContacts",POL%,1) return navigation_dossier_oui: res% = dll_call2("ShowOutlookFolderSelector",POL%,1) return navigation_dossier_non: res% = dll_call2("ShowOutlookFolderSelector",POL%,0) 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 action_deplacer: if MailChoisi%=0 message "Aucun mail choisi" return end_if if DossierChoisi%=0 message "Aucun dossier choisi" return end_if res% = dll_call3("MoveOutlookMail",POL%,MailChoisi%,DossierChoisi%) MailChoisi% = 0 return
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Interface avec Outlook Dim 21 Fév 2021 - 9:46 | |
| Petite amélioration visuelle: après la sélection d'un mail dans la grille des mails en haut à droite, cette ligne reste affichée en écriture blanche que fond bleu même si l'on clique ailleurs (dans un menu, dans un autre programme, etc).
Juste KGF.dll à télécharger, le programme démo est inchangé par rapport à la dernière version publiée. | |
| | | Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: Interface avec Outlook Dim 21 Fév 2021 - 11:36 | |
| Bonjour Klaus ! Ma période d’essai d’Outlook 2019 étant achevée, je ne peux plus effectuer de tests. Dans l’interface originale, il m’est devenu impossible de déplacer un message. Dans ton interface, c’est la même chose. Voici un dernier rapport dont il ne faut pas tenir compte des points d’échec : " - sélectionner un mail (pour qu'il soit affiché dans le visualisateur en bas à droite)" " - dans le menu "Navigation", choisir la nouvelle ligne "Afficher le sélecteur des dossiers" " " ==> la liste des dossiers s'affiche sur fond jaune, sans aucun dossier présélectionné" : OK !" - cliquer sur le dossier de destination" " ==> il sera affiché sur fond bleu avec écriture blanche, mais rien ne se passe encore" : OK !" - cliquer sur le bouton "OK"" ==> le mail est déplacé de son dossier d'origine " : Echec" ==> la liste entière des dossiers est rechargée " : Non décelable" ==> le dossier d'origine est sélectionné automatiquement " : OK !" ==> on constate que le mail visé a disparu de ce dossier " : Echec" - cliquer sur le dossier de destination " " ==> on voit que le mail a bien été déplacé dans ce dossier " : Echec+ ton amélioration de ce matin : " après la sélection d'un mail dans la grille des mails en haut à droite, cette ligne reste affichée en écriture blanche que fond bleu " : OK !Désolé, pour ce rapport qui ne sert pas à grand chose ! Bonne continuation dans cette aventure ! | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Interface avec Outlook Dim 21 Fév 2021 - 11:50 | |
| Tu a raison, marc. Mais, par ma faute, le mdoe d'emploi était partiellement incompet.
Voici la version opérationnelle: - sélectionner un mail (pour qu'il soit affiché dans le visualisateur en bas à droite) ==> la ligne de la grille des mails reste marquée écriture blanche sur fond bleu - dans le menu "Navigation", choisir la nouvelle ligne "Afficher le sélecteur des dossiers" ==> la liste des dossiers s'affiche sur fond jaune, sans aucun dossier présélectionné - cliquer sur le dossier de destination ==> il sera affiché sur fond bleu avec écriture blanche, mais rien ne se passe encore - cliquer sur le bouton "OK" ==> rien ne se passe encore, mais le dossier cible est identifié - dans le menu "Actions", choisir "Déplacer un mail" ==> le mail est déplacé de son dossier d'origine
==> la liste entière des dossiers est rechargée (ceci ne se produit plus !) ==> le dossier d'origine est sélectionné automatiquement ==> on constate que le mail visé a disparu de ce dossier - cliquer sur le dossier de destination ==> on voit que le mail a bien été déplacé dans ce dossier | |
| | | Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: Interface avec Outlook Dim 21 Fév 2021 - 12:08 | |
| Nouveau rapport : ... " ==> rien ne se passe encore, mais le dossier cible est identifié" : OK !" - dans le menu "Actions", choisir "Déplacer un mail" " " ==> le mail est déplacé de son dossier d'origine" OK !" ==> la liste entière des dossiers est rechargée (ceci ne se produit plus !)" " ==> le dossier d'origine est sélectionné automatiquement " : OK !" ==> on constate que le mail visé a disparu de ce dossier" : OK !" - cliquer sur le dossier de destination" " ==> on voit que le mail a bien été déplacé dans ce dossier" : OK ! | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Interface avec Outlook Dim 21 Fév 2021 - 12:38 | |
| Merci, Marc ! Tes retours sont précieux ! | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Interface avec Outlook Dim 21 Fév 2021 - 14:42 | |
| Voici uune version "améliorée" du programme de démo. On a maintenant un cadre donnant l'état de l'interace Panoramic/Outlook. Il affiche des informations pertinantes concernant: - le dossier affiché - le dossier choisi par le sélecteur de dossiers - me contact choisi - le mail choisi Voici le code (KGF.dll est inchangée !): - 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, navigation_dossier_oui, navigation_dossier_non label action_deplacer
dim res%, POL%, s$, s1$, mail%, i% dim Dossier%, MailIndex%, PieceIndex%, Sujet$, Expediteur$, Adresse$, Contact%, MailChoisi%, DossierChoisi%
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 215 : parent 215,21 : caption 215,"Afficher le sélecteur des dossiers" : on_click 215,navigation_dossier_oui sub_menu 216 : parent 216,21 : caption 216,"Cacher le sélecteur des dossiers" : on_click 216,navigation_dossier_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 sub_menu 412 : parent 412,41 : caption 412,"Déplacer un mail" : on_click 412,action_deplacer width 0,800 memo 1001 : hide 1001 : bar_both 1001 container 1002 : top 1002,height_client(0)-80 : left 1002,10 width 1002,width_client(0) : height 1002,height_client(0) - top(1002) caption 1002,"Etat de l'interface Panoramic - Outlook" alpha 1003 : parent 1003,1002 : top 1003,20 : left 1003,10 : parent 1003,1002 : caption 1003,"Etat de l'interface:" edit 1004 : inactive 1004 : top 1004,20 : left 1004,100 : parent 1004,1002 : font_bold 1004 : text 1004,"Non connecté" alpha 1005 : parent 1005,1002 : top 1005,10 : left 1005,240 : parent 1005,1002 : caption 1005,"Dossier choisi:" edit 1006 : inactive 1006 : top 1006,10 : left 1006,320 : width 1006,200 : parent 1006,1002 : font_bold 1006 : text 1006,"<aucun>" edit 1061 : inactive 1061 : top 1061,10 : left 1061,530 : width 1061,200 : parent 1061,1002 : font_bold 1061 : text 1061,"<aucun>"
alpha 1007 : parent 1007,1002 : top 1007,30 : left 1007,240 : parent 1007,1002 : caption 1007,"Contact choisi:" edit 1008 : inactive 1008 : top 1008,30 : left 1008,320 : width 1008,200 : parent 1008,1002 : font_bold 1008 : text 1008,"<aucun>" alpha 1009 : parent 1009,1002 : top 1009,50 : left 1009,10 : parent 1009,1002 : caption 1009,"Email choisi:" edit 1010 : inactive 1010 : top 1010,50 : left 1010,100 : width 1010,420 : parent 1010,1002 : font_bold 1010 : text 1010,"<aucun>"
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,800 height 0,700 top 1002,height_client(0)-80 : width 1002,width_client(0) - 20 POL% = dll_call4("CreateOutlook",handle(0),10,10,1) text 1004,"Connecté" return deplacer: if POL%=0 then return full_space 0 res% = dll_call3("LocateOutlook",POL%,0,0) top 1002,height_client(0)-100 : left 1002,0 : width 1002,width_client(0) return agrandir: if POL%=0 then return res% = dll_call5("ResizeOutlook",POL%,width_client(0),height_client(0)-100,400,200) top 1002,height_client(0)-100 : width 1002,width_client(0) 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," ") Dossier% = dll_call6("GetOutlookInformation",POL%,1,0,adr(s$),0,0) : ' dossier% contient l'objet du dossier s$ = trim$(s$) text 1006,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," ") MailChoisi% = dll_call6("GetOutlookInformation",POL%,2,USER_EVENT_LPARAM,adr(Sujet$),adr(Expediteur$),adr(Adresse$)) Sujet$ = trim$(Sujet$) Expediteur$ = trim$(Expediteur$) Adresse$ = trim$(Adresse$) text 1010,sujet$ message "Mail choisi: "+Sujet$+chr$(13)+chr$(10)+"De: "+Expediteur$+" Mail: "+Adresse$+chr$(13)+chr$(10)+" Objet mail="+str$(MailChoisi%) 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$ : ' 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 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)) for i%=1 to count(1001) s$ = item_read$(1001,i%) if left$(s$,9)="FullName=" text 1008,mid$(s$,10,len(s$)) exit_for end_if next i% message text$(1001) end_if
if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00050000") : ' est-ce une sélection de dossier dans le sélecteur des dossiers ? DossierChoisi% = USER_EVENT_LPARAM : ' USER_EVENT_LPARAM contient l'objet Dossier s$ = string$(200," ") res% = dll_call6("GetOutlookInformation",POL%,6,DossierChoisi%,adr(s$),0,0) s$ = trim$(s$) text 1061,s$ message "Dossier choisi: "+s$ end_if
end_if return navigation_reception: s$ = "Boîte de réception" res% = dll_call3("SelectOutlookFolder",POL%,adr(s$),1) return navigation_contacts_non: res% = dll_call2("ShowOutlookContacts",POL%,0) return navigation_contacts_oui: res% = dll_call2("ShowOutlookContacts",POL%,1) return navigation_dossier_oui: res% = dll_call2("ShowOutlookFolderSelector",POL%,1) return navigation_dossier_non: res% = dll_call2("ShowOutlookFolderSelector",POL%,0) 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 action_deplacer: if MailChoisi%=0 message "Aucun mail choisi" return end_if if DossierChoisi%=0 message "Aucun dossier choisi" return end_if res% = dll_call3("MoveOutlookMail",POL%,MailChoisi%,DossierChoisi%) MailChoisi% = 0 return
Et voici l'aspect: | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Interface avec Outlook Lun 22 Fév 2021 - 9:21 | |
| Nouvelle étape: On peut maintenant envoyer des mails construits par programme ! Pour cela, il y a deux nouvelles lignes dans me menu "Actions": - Créer un mail par programme - Créer un mail avec dialogue
La première ligne crée un mail et l'envoie de façon totalement automatique. La deuxième ligne crée le mail de la même manière mais l'affiche ensuite dans une fenêtre Outlook pour modification. Il faut d'abord choisir un contact de destination dans le sélecteur des contacts (menu "Navigation"), puis cliquer sur une des deux lignes dans le menu "Actions". La fonction SendOutlookMail a les paramètres suivants: - l'objet POL% retourné par CreateOutlook - l'objet contact retourné dans USER_EVENT_LPARAM lors du USER_EVENT de sélection de contact - le sujet du mail (si ce paramètre est 0 ou une chaîne vide, un sujet contenant date et heure sera créé) - le handle d'un mémo contenant la liste des pièces jointes, 1 ligne par pièce (valeur 0 ou mémo vide en cas d'absence de pièces jointes) - le handle d'un mémo contenant le texte du corps du mail, 1 ligne par ligne de mail (valeur 0 ou mémo vide en cas d'absence de de corps - un corps par défaut sera alors construit) Le mail sera envoyé par Outlook. Si contact choisi est une de ses propres adresses mail, le mail sera disponible dans l'interface lorque Outlook l'aura reçu (évidemment !). Il sera alors visible dans la "Boite de réception". Voici le programme de démo avec ces fonctionnalités: - 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, navigation_dossier_oui, navigation_dossier_non label action_deplacer, action_creer_mail_programme, action_creer_mail_dialog
dim res%, POL%, s$, s1$, mail%, i% dim Dossier%, MailIndex%, PieceIndex%, Sujet$, Expediteur$, Adresse$, Contact%, MailChoisi%, DossierChoisi%
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 215 : parent 215,21 : caption 215,"Afficher le sélecteur des dossiers" : on_click 215,navigation_dossier_oui sub_menu 216 : parent 216,21 : caption 216,"Cacher le sélecteur des dossiers" : on_click 216,navigation_dossier_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 sub_menu 412 : parent 412,41 : caption 412,"Déplacer un mail" : on_click 412,action_deplacer sub_menu 413 : parent 413,41 : caption 413,"Créer un mail par programme" : on_click 413,action_creer_mail_programme sub_menu 414 : parent 414,41 : caption 414,"Créer un mail avec dialogue" : on_click 414,action_creer_mail_dialog width 0,800 memo 1001 : hide 1001 : bar_both 1001 memo 1101 : hide 1101 : bar_both 1101 container 1002 : top 1002,height_client(0)-80 : left 1002,10 width 1002,width_client(0) : height 1002,height_client(0) - top(1002) caption 1002,"Etat de l'interface Panoramic - Outlook" alpha 1003 : parent 1003,1002 : top 1003,20 : left 1003,10 : parent 1003,1002 : caption 1003,"Etat de l'interface:" edit 1004 : inactive 1004 : top 1004,20 : left 1004,100 : parent 1004,1002 : font_bold 1004 : text 1004,"Non connecté" alpha 1005 : parent 1005,1002 : top 1005,10 : left 1005,240 : parent 1005,1002 : caption 1005,"Dossier choisi:" edit 1006 : inactive 1006 : top 1006,10 : left 1006,320 : width 1006,200 : parent 1006,1002 : font_bold 1006 : text 1006,"<aucun>" edit 1061 : inactive 1061 : top 1061,10 : left 1061,530 : width 1061,200 : parent 1061,1002 : font_bold 1061 : text 1061,"<aucun>"
alpha 1007 : parent 1007,1002 : top 1007,30 : left 1007,240 : parent 1007,1002 : caption 1007,"Contact choisi:" edit 1008 : inactive 1008 : top 1008,30 : left 1008,320 : width 1008,200 : parent 1008,1002 : font_bold 1008 : text 1008,"<aucun>" alpha 1009 : parent 1009,1002 : top 1009,50 : left 1009,10 : parent 1009,1002 : caption 1009,"Email choisi:" edit 1010 : inactive 1010 : top 1010,50 : left 1010,100 : width 1010,420 : parent 1010,1002 : font_bold 1010 : text 1010,"<aucun>"
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,800 height 0,700 top 1002,height_client(0)-80 : width 1002,width_client(0) - 20 POL% = dll_call4("CreateOutlook",handle(0),10,10,1) text 1004,"Connecté" return deplacer: if POL%=0 then return full_space 0 res% = dll_call3("LocateOutlook",POL%,0,0) top 1002,height_client(0)-100 : left 1002,0 : width 1002,width_client(0) return agrandir: if POL%=0 then return res% = dll_call5("ResizeOutlook",POL%,width_client(0),height_client(0)-100,400,200) top 1002,height_client(0)-100 : width 1002,width_client(0) 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," ") Dossier% = dll_call6("GetOutlookInformation",POL%,1,0,adr(s$),0,0) : ' dossier% contient l'objet du dossier s$ = trim$(s$) text 1006,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," ") MailChoisi% = dll_call6("GetOutlookInformation",POL%,2,USER_EVENT_LPARAM,adr(Sujet$),adr(Expediteur$),adr(Adresse$)) Sujet$ = trim$(Sujet$) Expediteur$ = trim$(Expediteur$) Adresse$ = trim$(Adresse$) text 1010,sujet$ message "Mail choisi: "+Sujet$+chr$(13)+chr$(10)+"De: "+Expediteur$+" Mail: "+Adresse$+chr$(13)+chr$(10)+" Objet mail="+str$(MailChoisi%) 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$ : ' 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 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)) for i%=1 to count(1001) s$ = item_read$(1001,i%) if left$(s$,9)="FullName=" text 1008,mid$(s$,10,len(s$)) exit_for end_if next i% message text$(1001) end_if
if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00050000") : ' est-ce une sélection de dossier dans le sélecteur des dossiers ? DossierChoisi% = USER_EVENT_LPARAM : ' USER_EVENT_LPARAM contient l'objet Dossier s$ = string$(200," ") res% = dll_call6("GetOutlookInformation",POL%,6,DossierChoisi%,adr(s$),0,0) s$ = trim$(s$) text 1061,s$ message "Dossier choisi: "+s$ end_if
end_if return navigation_reception: s$ = "Boîte de réception" res% = dll_call3("SelectOutlookFolder",POL%,adr(s$),1) return navigation_contacts_non: res% = dll_call2("ShowOutlookContacts",POL%,0) return navigation_contacts_oui: res% = dll_call2("ShowOutlookContacts",POL%,1) return navigation_dossier_oui: res% = dll_call2("ShowOutlookFolderSelector",POL%,1) return navigation_dossier_non: res% = dll_call2("ShowOutlookFolderSelector",POL%,0) 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 action_deplacer: if MailChoisi%=0 message "Aucun mail choisi" return end_if if DossierChoisi%=0 message "Aucun dossier choisi" return end_if res% = dll_call3("MoveOutlookMail",POL%,MailChoisi%,DossierChoisi%) MailChoisi% = 0 return action_creer_mail_programme: if contact%=0 message "Il faut choisir un contact d'abord !" return end_if ' préparer les pièces jointes clear 1101 item_add 1101,"KGF.ilb" : ' placer ici le nom d'un fichier des pièce jointe, ou laisser le mémo vide ' ... autant de lignes Attachment que nécessaires, une ligne par pièce jointe clear 1001 item_add 1001,"première ligne du mail" item_add 1001,"... placer ici le reste du mail" : ' autant de lignes que nécessaire... s$ = "Mail test généré par programme" : ' placer ici le sujet du mail ' contact% est l'objet contact sélectionné dans le sélecteur des contacts, retourné par USER_EVENT res% = dll_call6("SendOutlookMail",POL%,contact%,adr(s$),handle(1101),handle(1001),0) : ' le 0 signifie "pas de fenêtre Outlook de saisie mais envoi direct" message str$(res%) return
action_creer_mail_dialog: if contact%=0 message "Il faut choisir un contact d'abord !" return end_if ' préparer les pièces jointes clear 1101 item_add 1101,"KGF.ilb" : ' placer ici le nom d'un fichier des pièce jointe, ou laisser le mémo vide ' ... autant de lignes Attachment que nécessaires, une ligne par pièce jointe clear 1001 item_add 1001,"première ligne du mail" item_add 1001,"... placer ici le reste du mail" : ' autant de lignes que nécessaire... s$ = "Mail test généré par programme" : ' placer ici le sujet du mail ' contact% est l'objet contact sélectionné dans le sélecteur des contacts, retourné par USER_EVENT res% = dll_call6("SendOutlookMail",POL%,contact%,adr(s$),handle(1101),handle(1001),1) : ' le signifie "fenêtre Outlook de saisie" if res%=0 message "Mail envoyé" else message "Erreur - mail non envoyé" end_if 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 Lun 22 Fév 2021 - 13:10 | |
| Bonjour Klaus.
Je voulais tester ton programme pour les dernieres modifs, mais j'ai un message d'erreur en visualisant les contacts
Message
not correct arithmetic expression erreur in function : line 171
Bonne journée | |
| | | 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 Lun 22 Fév 2021 - 13:59 | |
| Désolé Klaus.
C'est ma faute, ma très grande faute.
Je n'avais pas mis la Dll dans la bonne directory.
Bon après midi à tous | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Interface avec Outlook Lun 22 Fév 2021 - 14:37 | |
| Nouvelle étape: Outre l' envoi de mails créés par programme (voir l'étape précédente), on peut maintenant: - cacher et réafficher l'interface Outlook complet - chercher et sélectionner un contact par son nomPour cela, le menu "Fichiers" contient deux nouvelles lignes: - Cacher l'interface - Montrer l'interfaceCes options peuvent être choisies n'importe quand. Elles n'ont pas d'influence sur la fonctionnalité, juste sur l'affichage. Et le menu "Actions" contient 2 nouvelles lignes: - Chercher un contact par son nom - Chercher un contact suivant par son nom Dans le programme de démo, j'ai mis "Klaus" comme critère de recherche. Il faut bien sûr adapter cela en ligne 323 et 328 pour mettre le critère de votre choix (ou le saisir par MESSAGE_TEXT$ ou MESSAGE_INPUT$, par exemple). La recherche s'effectue depuis le début de la liste des contacts, en regardant si le critère choisi est présent dans la chaîne de caractères représentant la propriété FullName de l'objet Contact. Le première ligne retourne ainsi le premier contact trouvé dont FullName contient le critère de recherche. La seconde ligne cherche au-delà du contact trouvé et retourne ainsi l'occurence suivante, etc. Même si la liste des contacts n'est pas affichée à ce moment, le contact trouvé est "sélectionné" (affiché en écriture blanche sur fond bleu). On le constate en affichant le sélecteur des contacts par le menu "Navigation". Voici le programme de démo: - Code:
-
' test_Outlook_2007.bas
label creer, deplacer, agrandir, cacher, montrer, 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, navigation_dossier_oui, navigation_dossier_non label action_deplacer, action_creer_mail_programme, action_creer_mail_dialog, action_chercher_contact_nom label action_chercher_contact_nom_suivant
dim res%, POL%, s$, s1$, mail%, i% dim Dossier%, MailIndex%, PieceIndex%, Sujet$, Expediteur$, Adresse$, Contact%, MailChoisi%, DossierChoisi%
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,"Cacher l'interface" : on_click 114,cacher sub_menu 115 : parent 115,11 : caption 115,"Montrer l'interface" : on_click 115,montrer sub_menu 116 : parent 116,11 : caption 116,"-" sub_menu 117 : parent 117,11 : caption 117,"Sortir" : on_click 117,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 215 : parent 215,21 : caption 215,"Afficher le sélecteur des dossiers" : on_click 215,navigation_dossier_oui sub_menu 216 : parent 216,21 : caption 216,"Cacher le sélecteur des dossiers" : on_click 216,navigation_dossier_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 sub_menu 412 : parent 412,41 : caption 412,"Déplacer un mail" : on_click 412,action_deplacer sub_menu 413 : parent 413,41 : caption 413,"Créer un mail par programme" : on_click 413,action_creer_mail_programme sub_menu 414 : parent 414,41 : caption 414,"Créer un mail avec dialogue" : on_click 414,action_creer_mail_dialog sub_menu 415 : parent 415,41 : caption 415,"Chercher un contact par son nom" : on_click 415,action_chercher_contact_nom sub_menu 416 : parent 416,41 : caption 416,"Chercher un contact suivant par son nom" : on_click 416,action_chercher_contact_nom_suivant width 0,800 memo 1001 : hide 1001 : bar_both 1001 memo 1101 : hide 1101 : bar_both 1101 container 1002 : top 1002,height_client(0)-80 : left 1002,10 width 1002,width_client(0) : height 1002,height_client(0) - top(1002) caption 1002,"Etat de l'interface Panoramic - Outlook" alpha 1003 : parent 1003,1002 : top 1003,20 : left 1003,10 : parent 1003,1002 : caption 1003,"Etat de l'interface:" edit 1004 : inactive 1004 : top 1004,20 : left 1004,100 : parent 1004,1002 : font_bold 1004 : text 1004,"Non connecté" alpha 1005 : parent 1005,1002 : top 1005,10 : left 1005,240 : parent 1005,1002 : caption 1005,"Dossier choisi:" edit 1006 : inactive 1006 : top 1006,10 : left 1006,320 : width 1006,200 : parent 1006,1002 : font_bold 1006 : text 1006,"<aucun>" edit 1061 : inactive 1061 : top 1061,10 : left 1061,530 : width 1061,200 : parent 1061,1002 : font_bold 1061 : text 1061,"<aucun>"
alpha 1007 : parent 1007,1002 : top 1007,30 : left 1007,240 : parent 1007,1002 : caption 1007,"Contact choisi:" edit 1008 : inactive 1008 : top 1008,30 : left 1008,320 : width 1008,200 : parent 1008,1002 : font_bold 1008 : text 1008,"<aucun>" alpha 1009 : parent 1009,1002 : top 1009,50 : left 1009,10 : parent 1009,1002 : caption 1009,"Email choisi:" edit 1010 : inactive 1010 : top 1010,50 : left 1010,100 : width 1010,420 : parent 1010,1002 : font_bold 1010 : text 1010,"<aucun>"
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,800 height 0,700 top 1002,height_client(0)-80 : width 1002,width_client(0) - 20 POL% = dll_call4("CreateOutlook",handle(0),10,10,1) text 1004,"Connecté" return deplacer: if POL%=0 then return full_space 0 res% = dll_call3("LocateOutlook",POL%,0,0) top 1002,height_client(0)-100 : left 1002,0 : width 1002,width_client(0) return agrandir: if POL%=0 then return res% = dll_call5("ResizeOutlook",POL%,width_client(0),height_client(0)-100,400,200) top 1002,height_client(0)-100 : width 1002,width_client(0) return cacher: if POL%=0 then return res% = dll_call2("OutlookVisibility",POL%,0) return montrer: if POL%=0 then return res% = dll_call2("OutlookVisibility",POL%,1) 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," ") Dossier% = dll_call6("GetOutlookInformation",POL%,1,0,adr(s$),0,0) : ' dossier% contient l'objet du dossier s$ = trim$(s$) text 1006,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," ") MailChoisi% = dll_call6("GetOutlookInformation",POL%,2,USER_EVENT_LPARAM,adr(Sujet$),adr(Expediteur$),adr(Adresse$)) Sujet$ = trim$(Sujet$) Expediteur$ = trim$(Expediteur$) Adresse$ = trim$(Adresse$) text 1010,sujet$ message "Mail choisi: "+Sujet$+chr$(13)+chr$(10)+"De: "+Expediteur$+" Mail: "+Adresse$+chr$(13)+chr$(10)+" Objet mail="+str$(MailChoisi%) 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$ : ' 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 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)) for i%=1 to count(1001) s$ = item_read$(1001,i%) if left$(s$,9)="FullName=" text 1008,mid$(s$,10,len(s$)) exit_for end_if next i% message text$(1001) end_if
if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00050000") : ' est-ce une sélection de dossier dans le sélecteur des dossiers ? DossierChoisi% = USER_EVENT_LPARAM : ' USER_EVENT_LPARAM contient l'objet Dossier s$ = string$(200," ") res% = dll_call6("GetOutlookInformation",POL%,6,DossierChoisi%,adr(s$),0,0) s$ = trim$(s$) text 1061,s$ message "Dossier choisi: "+s$ end_if
end_if return navigation_reception: if POL%=0 then return s$ = "Boîte de réception" res% = dll_call3("SelectOutlookFolder",POL%,adr(s$),1) return navigation_contacts_non: if POL%=0 then return res% = dll_call2("ShowOutlookContacts",POL%,0) return navigation_contacts_oui: if POL%=0 then return res% = dll_call2("ShowOutlookContacts",POL%,1) return navigation_dossier_oui: if POL%=0 then return res% = dll_call2("ShowOutlookFolderSelector",POL%,1) return navigation_dossier_non: if POL%=0 then return res% = dll_call2("ShowOutlookFolderSelector",POL%,0) return information_dossiers_1: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookFolderList",POL%,0,handle(1001)) message text$(1001) return
information_dossiers_2: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookFolderList",POL%,1,handle(1001)) message text$(1001) return
information_dossiers_3: if POL%=0 then return 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: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookMailList",POL%,1,handle(1001)) message text$(1001) return
information_mails_3: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookMailList",POL%,2,handle(1001)) message text$(1001) return information_mail1: if POL%=0 then return 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: if POL%=0 then return 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 action_deplacer: if POL%=0 then return if MailChoisi%=0 message "Aucun mail choisi" return end_if if DossierChoisi%=0 message "Aucun dossier choisi" return end_if res% = dll_call3("MoveOutlookMail",POL%,MailChoisi%,DossierChoisi%) MailChoisi% = 0 return action_creer_mail_programme: if POL%=0 then return if contact%=0 message "Il faut choisir un contact d'abord !" return end_if ' préparer les pièces jointes clear 1101 item_add 1101,"KGF.ilb" : ' placer ici le nom d'un fichier des pièce jointe, ou laisser le mémo vide ' ... autant de lignes Attachment que nécessaires, une ligne par pièce jointe clear 1001 item_add 1001,"première ligne du mail" item_add 1001,"... placer ici le reste du mail" : ' autant de lignes que nécessaire... s$ = "Mail test généré par programme" : ' placer ici le sujet du mail ' contact% est l'objet contact sélectionné dans le sélecteur des contacts, retourné par USER_EVENT res% = dll_call6("SendOutlookMail",POL%,contact%,adr(s$),handle(1101),handle(1001),0) : ' le 0 signifie "pas de fenêtre Outlook de saisie mais envoi direct" message str$(res%) return
action_creer_mail_dialog: if POL%=0 then return if contact%=0 message "Il faut choisir un contact d'abord !" return end_if ' préparer les pièces jointes clear 1101 item_add 1101,"KGF.ilb" : ' placer ici le nom d'un fichier des pièce jointe, ou laisser le mémo vide ' ... autant de lignes Attachment que nécessaires, une ligne par pièce jointe clear 1001 item_add 1001,"première ligne du mail" item_add 1001,"... placer ici le reste du mail" : ' autant de lignes que nécessaire... s$ = "Mail test généré par programme" : ' placer ici le sujet du mail ' contact% est l'objet contact sélectionné dans le sélecteur des contacts, retourné par USER_EVENT res% = dll_call6("SendOutlookMail",POL%,contact%,adr(s$),handle(1101),handle(1001),1) : ' le signifie "fenêtre Outlook de saisie" if res%=0 message "Mail envoyé" else message "Erreur - mail non envoyé" end_if return action_chercher_contact_nom: if POL%=0 then return s$ = "Klaus" res% = dll_call2("GetOutlookContactByName",POL%,adr(s$)) return
action_chercher_contact_nom_suivant: if POL%=0 then return s$ = "Klaus" res% = dll_call3("GetNextOutlookContactByName",POL%,contact%,adr(s$)) return
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Interface avec Outlook Mar 23 Fév 2021 - 10:58 | |
| Nouvelle étape: On a maintenant un sélecteur de compte Outlook !Dans le menu Navigation, deux nouvelles lignes font leur apparition pour montrer et cacher le sélecteur des comptes Outlook. Lors de la création de l'interface Outlook la liste des comptes Outlook est chargée dans le sélecteur des comptes. Le compte Outlook par défaut est sélectionné (affiché en écriture blanche sur fond bleu). Le nom du compte par défaut est affiché en bas à droite dans le pannéau d'état de l'interface (nouveau champ). Un clic sur un des comptes du sélecteur des comptes Outlook sélectionne ce compte ce qui génère un USER_EVENT. Attention: cette sélection est effective dans l'interface Outlook, mais n'affecte pas le compte par défaut de Outlook !Le menu "Informations" contient aussi 3 nouvelles lignes pour retourner la liste des comptes Outlook. Lors de la sélection d'un compte, le programme de démo affiche quelques détails du compte. Les mails envoyés par les fonctions d'envoi du menu "Actions" utilisent maintenant le compte par défaut choisi dans ce sélecteur. Par ailleurs, le programme tente de détecter la version installée de Outlook et affiche le résultat dans le titre de la Form 0. Voici le programme de démo: - Code:
-
' test_Outlook_2007.bas
label creer, deplacer, agrandir, cacher, montrer, 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, navigation_dossier_oui, navigation_dossier_non label action_deplacer, action_creer_mail_programme, action_creer_mail_dialog, action_chercher_contact_nom label action_chercher_contact_nom_suivant, navigation_comptes_oui, navigation_comptes_non label information_comptes_1, information_comptes_2, information_comptes_3
dim res%, POL%, s$, s1$, mail%, i% dim Dossier%, MailIndex%, PieceIndex%, Sujet$, Expediteur$, Adresse$, Contact%, MailChoisi%, DossierChoisi% dim CompteParDefaut%
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,"Cacher l'interface" : on_click 114,cacher sub_menu 115 : parent 115,11 : caption 115,"Montrer l'interface" : on_click 115,montrer sub_menu 116 : parent 116,11 : caption 116,"-" sub_menu 117 : parent 117,11 : caption 117,"Sortir" : on_click 117,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 215 : parent 215,21 : caption 215,"Afficher le sélecteur des dossiers" : on_click 215,navigation_dossier_oui sub_menu 216 : parent 216,21 : caption 216,"Cacher le sélecteur des dossiers" : on_click 216,navigation_dossier_non sub_menu 217 : parent 217,21 : caption 217,"Afficher le sélecteur des comptes" : on_click 217,navigation_comptes_oui sub_menu 218 : parent 218,21 : caption 218,"Cacher le sélecteur des comptes" : on_click 218,navigation_comptes_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 comptes - noms" : on_click 315,information_Comptes_1 sub_menu 316 : parent 316,31 : caption 316,"Liste des comptes - objets" : on_click 316,information_Comptes_2 sub_menu 317 : parent 317,31 : caption 317,"Liste des comptes - noms et objets" : on_click 317,information_Comptes_3 sub_menu 318 : parent 318,31 : caption 318,"-" sub_menu 319 : parent 319,31 : caption 319,"Liste des mails - noms" : on_click 319,information_mails_1 sub_menu 320 : parent 320,31 : caption 320,"Liste des mails - objets" : on_click 320,information_mails_2 sub_menu 321 : parent 321,31 : caption 321,"Liste des mails - noms et objets" : on_click 321,information_mails_3 sub_menu 322 : parent 322,31 : caption 322,"-" sub_menu 323 : parent 323,31 : caption 323,"Informations mail 1" : on_click 323,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 sub_menu 412 : parent 412,41 : caption 412,"Déplacer un mail" : on_click 412,action_deplacer sub_menu 413 : parent 413,41 : caption 413,"Créer un mail par programme" : on_click 413,action_creer_mail_programme sub_menu 414 : parent 414,41 : caption 414,"Créer un mail avec dialogue" : on_click 414,action_creer_mail_dialog sub_menu 415 : parent 415,41 : caption 415,"Chercher un contact par son nom" : on_click 415,action_chercher_contact_nom sub_menu 416 : parent 416,41 : caption 416,"Chercher un contact suivant par son nom" : on_click 416,action_chercher_contact_nom_suivant width 0,800 memo 1001 : hide 1001 : bar_both 1001 memo 1101 : hide 1101 : bar_both 1101 container 1002 : top 1002,height_client(0)-80 : left 1002,10 width 1002,width_client(0) : height 1002,height_client(0) - top(1002) caption 1002,"Etat de l'interface Panoramic - Outlook" alpha 1003 : parent 1003,1002 : top 1003,20 : left 1003,10 : parent 1003,1002 : caption 1003,"Etat de l'interface:" edit 1004 : inactive 1004 : top 1004,20 : left 1004,100 : parent 1004,1002 : font_bold 1004 : text 1004,"Non connecté" alpha 1005 : parent 1005,1002 : top 1005,10 : left 1005,240 : parent 1005,1002 : caption 1005,"Dossier choisi:" edit 1006 : inactive 1006 : top 1006,10 : left 1006,320 : width 1006,200 : parent 1006,1002 : font_bold 1006 : text 1006,"<aucun>" alpha 1060 : top 1060,10 : left 1060,530 : parent 1060,1002 : caption 1060,"===>" edit 1061 : inactive 1061 : top 1061,10 : left 1061,560 : width 1061,200 : parent 1061,1002 : font_bold 1061 : text 1061,"<aucun>"
alpha 1007 : parent 1007,1002 : top 1007,30 : left 1007,240 : parent 1007,1002 : caption 1007,"Contact choisi:" edit 1008 : inactive 1008 : top 1008,30 : left 1008,320 : width 1008,200 : parent 1008,1002 : font_bold 1008 : text 1008,"<aucun>" alpha 1009 : parent 1009,1002 : top 1009,50 : left 1009,10 : parent 1009,1002 : caption 1009,"Email choisi:" edit 1010 : inactive 1010 : top 1010,50 : left 1010,100 : width 1010,420 : parent 1010,1002 : font_bold 1010 : text 1010,"<aucun>"
alpha 1011 : top 1011,35 : left 1011,530 : parent 1011,1002: caption 1011,"Compte:" edit 1012 : inactive 1012 : top 1012,50 : left 1012,560 : width 1012,200 : parent 1012,1002 : font_bold 1012 : text 1012,"<aucun>"
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,800 height 0,700 top 1002,height_client(0)-80 : width 1002,width_client(0) - 20 POL% = dll_call4("CreateOutlook",handle(0),10,10,1) text 1004,"Connecté" s$ = string$(200," ") res% = dll_call6("GetOutlookInformation",POL%,7,0,adr(s$),0,0) s$ = trim$(s$) text 1012,s$ s$ = string$(30," ") res% = dll_call6("GetOutlookInformation",POL%,9,0,adr(s$),0,0) caption 0,"Outlook version "+trim$(s$) return deplacer: if POL%=0 then return full_space 0 res% = dll_call3("LocateOutlook",POL%,0,0) top 1002,height_client(0)-100 : left 1002,0 : width 1002,width_client(0) return agrandir: if POL%=0 then return res% = dll_call5("ResizeOutlook",POL%,width_client(0),height_client(0)-100,400,200) top 1002,height_client(0)-100 : width 1002,width_client(0) return cacher: if POL%=0 then return res% = dll_call2("OutlookVisibility",POL%,0) return montrer: if POL%=0 then return res% = dll_call2("OutlookVisibility",POL%,1) 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," ") Dossier% = dll_call6("GetOutlookInformation",POL%,1,0,adr(s$),0,0) : ' dossier% contient l'objet du dossier s$ = trim$(s$) text 1006,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," ") MailChoisi% = dll_call6("GetOutlookInformation",POL%,2,USER_EVENT_LPARAM,adr(Sujet$),adr(Expediteur$),adr(Adresse$)) Sujet$ = trim$(Sujet$) Expediteur$ = trim$(Expediteur$) Adresse$ = trim$(Adresse$) text 1010,sujet$ message "Mail choisi: "+Sujet$+chr$(13)+chr$(10)+"De: "+Expediteur$+" Mail: "+Adresse$+chr$(13)+chr$(10)+" Objet mail="+str$(MailChoisi%) 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$ : ' 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 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)) for i%=1 to count(1001) s$ = item_read$(1001,i%) if left$(s$,9)="FullName=" text 1008,mid$(s$,10,len(s$)) exit_for end_if next i% message text$(1001) end_if
if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00050000") : ' est-ce une sélection de dossier dans le sélecteur des dossiers ? DossierChoisi% = USER_EVENT_LPARAM : ' USER_EVENT_LPARAM contient l'objet Dossier s$ = string$(200," ") res% = dll_call6("GetOutlookInformation",POL%,6,DossierChoisi%,adr(s$),0,0) s$ = trim$(s$) text 1061,s$ message "Dossier choisi: "+s$ end_if
if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00060000") : ' est-ce une sélection de compte dans le sélecteur des comptes ? CompteParDefaut% = USER_EVENT_LPARAM : ' USER_EVENT_LPARAM contient l'objet Compte clear 1001 res% = dll_call6("GetOutlookInformation",POL%,8,CompteParDefaut%,handle(1001),0,0) s$ = text$(1001) message "Compte choisi: "+chr$(13)+chr$(10)+s$ for i%=1 to count(1001) s$ = item_read$(1001,i%) if left$(s$,10)="UserName=" s$ = mid$(s$,11,len(s$)) exit_for end_if next i% text 1012,s$ end_if
end_if return navigation_reception: if POL%=0 then return s$ = "Boîte de réception" res% = dll_call3("SelectOutlookFolder",POL%,adr(s$),1) return navigation_contacts_non: if POL%=0 then return res% = dll_call2("ShowOutlookContacts",POL%,0) return navigation_contacts_oui: if POL%=0 then return res% = dll_call2("ShowOutlookContacts",POL%,1) return navigation_dossier_oui: if POL%=0 then return res% = dll_call2("ShowOutlookFolderSelector",POL%,1) return navigation_dossier_non: if POL%=0 then return res% = dll_call2("ShowOutlookFolderSelector",POL%,0) return navigation_comptes_non: if POL%=0 then return res% = dll_call2("ShowOutlookAccounts",POL%,0) return navigation_comptes_Oui: if POL%=0 then return res% = dll_call2("ShowOutlookAccounts",POL%,1) return information_dossiers_1: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookFolderList",POL%,0,handle(1001)) message text$(1001) return
information_dossiers_2: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookFolderList",POL%,1,handle(1001)) message text$(1001) return
information_dossiers_3: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookFolderList",POL%,2,handle(1001)) message text$(1001) return information_comptes_1: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookAccountList",POL%,0,handle(1001)) message text$(1001) return
information_comptes_2: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookAccountList",POL%,1,handle(1001)) message text$(1001) return
information_comptes_3: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookAccountList",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: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookMailList",POL%,1,handle(1001)) message text$(1001) return
information_mails_3: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookMailList",POL%,2,handle(1001)) message text$(1001) return information_mail1: if POL%=0 then return 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: if POL%=0 then return 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 action_deplacer: if POL%=0 then return if MailChoisi%=0 message "Aucun mail choisi" return end_if if DossierChoisi%=0 message "Aucun dossier choisi" return end_if res% = dll_call3("MoveOutlookMail",POL%,MailChoisi%,DossierChoisi%) MailChoisi% = 0 return action_creer_mail_programme: if POL%=0 then return if contact%=0 message "Il faut choisir un contact d'abord !" return end_if ' préparer les pièces jointes clear 1101 item_add 1101,"KGF.ilb" : ' placer ici le nom d'un fichier des pièce jointe, ou laisser le mémo vide ' ... autant de lignes Attachment que nécessaires, une ligne par pièce jointe clear 1001 item_add 1001,"première ligne du mail" item_add 1001,"... placer ici le reste du mail" : ' autant de lignes que nécessaire... s$ = "Mail test généré par programme" : ' placer ici le sujet du mail ' contact% est l'objet contact sélectionné dans le sélecteur des contacts, retourné par USER_EVENT res% = dll_call6("SendOutlookMail",POL%,contact%,adr(s$),handle(1101),handle(1001),0) : ' le 0 signifie "pas de fenêtre Outlook de saisie mais envoi direct" message str$(res%) return
action_creer_mail_dialog: if POL%=0 then return if contact%=0 message "Il faut choisir un contact d'abord !" return end_if ' préparer les pièces jointes clear 1101 item_add 1101,"KGF.ilb" : ' placer ici le nom d'un fichier des pièce jointe, ou laisser le mémo vide ' ... autant de lignes Attachment que nécessaires, une ligne par pièce jointe clear 1001 item_add 1001,"première ligne du mail" item_add 1001,"... placer ici le reste du mail" : ' autant de lignes que nécessaire... s$ = "Mail test généré par programme" : ' placer ici le sujet du mail ' contact% est l'objet contact sélectionné dans le sélecteur des contacts, retourné par USER_EVENT res% = dll_call6("SendOutlookMail",POL%,contact%,adr(s$),handle(1101),handle(1001),1) : ' le signifie "fenêtre Outlook de saisie" if res%=0 message "Mail envoyé" else message "Erreur - mail non envoyé" end_if return action_chercher_contact_nom: if POL%=0 then return s$ = "Klaus" res% = dll_call2("GetOutlookContactByName",POL%,adr(s$)) return
action_chercher_contact_nom_suivant: if POL%=0 then return s$ = "Klaus" res% = dll_call3("GetNextOutlookContactByName",POL%,contact%,adr(s$)) return
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Interface avec Outlook Jeu 25 Fév 2021 - 10:14 | |
| Nouvelle étape: L'interface Outlook peut maintenant détecter l'arivée de nouveaux mails dans la boite de réception !C'est une option activée par la fonction SetOutlookNewMailMemo qui autorise le scan des nouveaux mails, indique le handle d'un mémo pour recevoir la liste des objets des nouveaux mails ainsi qu'un intervalle de ttemps pour vérifiern périodiquement l'arrivée de nouveaux mails. Ccei est géré par un timer interne à l'interface. L'arrivée de nouveaux mails est signalé par un USER_EVENT, et il revient au programme Panoramic de traiter la liste des mails arrivés et de vider cette liste au fur et à mesure que les mails sont traités. Comme l'interface Outlook ajoute les nouveaux mails en fin de liste, il suffit de faire une boucle WHILE sur le nombre d'éléments contenus dans ce mémo, et pour chaque itération, extraire l'élément numéro 1 (le plus ancien !), le supprimer de la liste et de le traiter. Voici le programme de démo qui va avec. L'intevalle est fixé à 1 minute dans le code Panoramic. - Code:
-
' test_Outlook_2007.bas
label creer, deplacer, agrandir, cacher, montrer, 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, navigation_dossier_oui, navigation_dossier_non label action_deplacer, action_creer_mail_programme, action_creer_mail_dialog, action_chercher_contact_nom label action_chercher_contact_nom_suivant, navigation_comptes_oui, navigation_comptes_non label information_comptes_1, information_comptes_2, information_comptes_3
dim res%, POL%, s$, s1$, mail%, i% dim Dossier%, MailIndex%, PieceIndex%, Sujet$, Expediteur$, Adresse$, Contact%, MailChoisi%, DossierChoisi% dim CompteParDefaut%
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,"Cacher l'interface" : on_click 114,cacher sub_menu 115 : parent 115,11 : caption 115,"Montrer l'interface" : on_click 115,montrer sub_menu 116 : parent 116,11 : caption 116,"-" sub_menu 117 : parent 117,11 : caption 117,"Sortir" : on_click 117,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 215 : parent 215,21 : caption 215,"Afficher le sélecteur des dossiers" : on_click 215,navigation_dossier_oui sub_menu 216 : parent 216,21 : caption 216,"Cacher le sélecteur des dossiers" : on_click 216,navigation_dossier_non sub_menu 217 : parent 217,21 : caption 217,"Afficher le sélecteur des comptes" : on_click 217,navigation_comptes_oui sub_menu 218 : parent 218,21 : caption 218,"Cacher le sélecteur des comptes" : on_click 218,navigation_comptes_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 comptes - noms" : on_click 315,information_Comptes_1 sub_menu 316 : parent 316,31 : caption 316,"Liste des comptes - objets" : on_click 316,information_Comptes_2 sub_menu 317 : parent 317,31 : caption 317,"Liste des comptes - noms et objets" : on_click 317,information_Comptes_3 sub_menu 318 : parent 318,31 : caption 318,"-" sub_menu 319 : parent 319,31 : caption 319,"Liste des mails - noms" : on_click 319,information_mails_1 sub_menu 320 : parent 320,31 : caption 320,"Liste des mails - objets" : on_click 320,information_mails_2 sub_menu 321 : parent 321,31 : caption 321,"Liste des mails - noms et objets" : on_click 321,information_mails_3 sub_menu 322 : parent 322,31 : caption 322,"-" sub_menu 323 : parent 323,31 : caption 323,"Informations mail 1" : on_click 323,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 sub_menu 412 : parent 412,41 : caption 412,"Déplacer un mail" : on_click 412,action_deplacer sub_menu 413 : parent 413,41 : caption 413,"Créer un mail par programme" : on_click 413,action_creer_mail_programme sub_menu 414 : parent 414,41 : caption 414,"Créer un mail avec dialogue" : on_click 414,action_creer_mail_dialog sub_menu 415 : parent 415,41 : caption 415,"Chercher un contact par son nom" : on_click 415,action_chercher_contact_nom sub_menu 416 : parent 416,41 : caption 416,"Chercher un contact suivant par son nom" : on_click 416,action_chercher_contact_nom_suivant width 0,800 memo 1001 : hide 1001 : bar_both 1001 memo 1101 : hide 1101 : bar_both 1101 memo 1102 : hide 1102 : bar_both 1102
container 1002 : top 1002,height_client(0)-80 : left 1002,10 width 1002,width_client(0) : height 1002,height_client(0) - top(1002) caption 1002,"Etat de l'interface Panoramic - Outlook" alpha 1003 : parent 1003,1002 : top 1003,20 : left 1003,10 : parent 1003,1002 : caption 1003,"Etat de l'interface:" edit 1004 : inactive 1004 : top 1004,20 : left 1004,100 : parent 1004,1002 : font_bold 1004 : text 1004,"Non connecté" alpha 1005 : parent 1005,1002 : top 1005,10 : left 1005,240 : parent 1005,1002 : caption 1005,"Dossier choisi:" edit 1006 : inactive 1006 : top 1006,10 : left 1006,320 : width 1006,200 : parent 1006,1002 : font_bold 1006 : text 1006,"<aucun>" alpha 1060 : top 1060,10 : left 1060,530 : parent 1060,1002 : caption 1060,"===>" edit 1061 : inactive 1061 : top 1061,10 : left 1061,560 : width 1061,200 : parent 1061,1002 : font_bold 1061 : text 1061,"<aucun>"
alpha 1007 : parent 1007,1002 : top 1007,30 : left 1007,240 : parent 1007,1002 : caption 1007,"Contact choisi:" edit 1008 : inactive 1008 : top 1008,30 : left 1008,320 : width 1008,200 : parent 1008,1002 : font_bold 1008 : text 1008,"<aucun>" alpha 1009 : parent 1009,1002 : top 1009,50 : left 1009,10 : parent 1009,1002 : caption 1009,"Email choisi:" edit 1010 : inactive 1010 : top 1010,50 : left 1010,100 : width 1010,420 : parent 1010,1002 : font_bold 1010 : text 1010,"<aucun>"
alpha 1011 : top 1011,35 : left 1011,530 : parent 1011,1002: caption 1011,"Compte:" edit 1012 : inactive 1012 : top 1012,50 : left 1012,560 : width 1012,200 : parent 1012,1002 : font_bold 1012 : text 1012,"<aucun>"
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,800 height 0,700 top 1002,height_client(0)-80 : width 1002,width_client(0) - 20 POL% = dll_call4("CreateOutlook",handle(0),10,10,1) text 1004,"Connecté" s$ = string$(200," ") res% = dll_call6("GetOutlookInformation",POL%,7,0,adr(s$),0,0) s$ = trim$(s$) text 1012,s$ s$ = string$(30," ") res% = dll_call6("GetOutlookInformation",POL%,9,0,adr(s$),0,0) caption 0,"Outlook version "+trim$(s$) res% = dll_call3("SetOutlookNewMailMemo",POL%,handle(1102),1) return deplacer: if POL%=0 then return full_space 0 res% = dll_call3("LocateOutlook",POL%,0,0) top 1002,height_client(0)-100 : left 1002,0 : width 1002,width_client(0) return agrandir: if POL%=0 then return res% = dll_call5("ResizeOutlook",POL%,width_client(0),height_client(0)-100,400,200) top 1002,height_client(0)-100 : width 1002,width_client(0) return cacher: if POL%=0 then return res% = dll_call2("OutlookVisibility",POL%,0) return montrer: if POL%=0 then return res% = dll_call2("OutlookVisibility",POL%,1) 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," ") Dossier% = dll_call6("GetOutlookInformation",POL%,1,0,adr(s$),0,0) : ' dossier% contient l'objet du dossier s$ = trim$(s$) text 1006,s$ message "Dossier choisi: "+s$ return 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," ") MailChoisi% = dll_call6("GetOutlookInformation",POL%,2,USER_EVENT_LPARAM,adr(Sujet$),adr(Expediteur$),adr(Adresse$)) Sujet$ = trim$(Sujet$) Expediteur$ = trim$(Expediteur$) Adresse$ = trim$(Adresse$) text 1010,sujet$ message "Mail choisi: "+Sujet$+chr$(13)+chr$(10)+"De: "+Expediteur$+" Mail: "+Adresse$+chr$(13)+chr$(10)+" Objet mail="+str$(MailChoisi%) return 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$ : ' 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 return 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)) for i%=1 to count(1001) s$ = item_read$(1001,i%) if left$(s$,9)="FullName=" text 1008,mid$(s$,10,len(s$)) exit_for end_if next i% message text$(1001) return end_if
if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00050000") : ' est-ce une sélection de dossier dans le sélecteur des dossiers ? DossierChoisi% = USER_EVENT_LPARAM : ' USER_EVENT_LPARAM contient l'objet Dossier s$ = string$(200," ") res% = dll_call6("GetOutlookInformation",POL%,6,DossierChoisi%,adr(s$),0,0) s$ = trim$(s$) text 1061,s$ message "Dossier choisi: "+s$ return end_if
if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00060000") : ' est-ce une sélection de compte dans le sélecteur des comptes ? CompteParDefaut% = USER_EVENT_LPARAM : ' USER_EVENT_LPARAM contient l'objet Compte clear 1001 res% = dll_call6("GetOutlookInformation",POL%,8,CompteParDefaut%,handle(1001),0,0) s$ = text$(1001) message "Compte choisi: "+chr$(13)+chr$(10)+s$ for i%=1 to count(1001) s$ = item_read$(1001,i%) if left$(s$,10)="UserName=" s$ = mid$(s$,11,len(s$)) exit_for end_if next i% text 1012,s$ return end_if
if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00070000") : ' est-ce qu'on a reçu de nouveaux mails ? ' USER_EVENT_LPARAM contient le nombre de nouveaux mails ' message str$(USER_EVENT_LPARAM)+" nouveaux mails:"+chr$(13)+chr$(10)+text$(1102) if count(1102)>0 ' traiter les nouvaux mails while count(1102)>0 ' ici, traiter le mail dans item_read$(1102,1) mail% = val(item_read$(1102,1)) Sujet$ = string$(200," ") Expediteur$ = string$(200," ") Adresse$ = string$(200," ") res% = dll_call6("GetOutlookInformation",POL%,10,mail%,adr(Sujet$),adr(Expediteur$),adr(Adresse$)) Sujet$ = trim$(Sujet$) Expediteur$ = trim$(Expediteur$) Adresse$ = trim$(Adresse$) message "Mail reçu: "+Sujet$+chr$(13)+chr$(10)+"De: "+Expediteur$+" Mail: "+Adresse$+chr$(13)+chr$(10)+" Objet mail="+str$(MailChoisi%) ' et le supprimer de la liste item_delete 1102,1 end_while end_if return end_if
end_if return navigation_reception: if POL%=0 then return s$ = "Boîte de réception" res% = dll_call3("SelectOutlookFolder",POL%,adr(s$),1) return navigation_contacts_non: if POL%=0 then return res% = dll_call2("ShowOutlookContacts",POL%,0) return navigation_contacts_oui: if POL%=0 then return res% = dll_call2("ShowOutlookContacts",POL%,1) return navigation_dossier_oui: if POL%=0 then return res% = dll_call2("ShowOutlookFolderSelector",POL%,1) return navigation_dossier_non: if POL%=0 then return res% = dll_call2("ShowOutlookFolderSelector",POL%,0) return navigation_comptes_non: if POL%=0 then return res% = dll_call2("ShowOutlookAccounts",POL%,0) return navigation_comptes_Oui: if POL%=0 then return res% = dll_call2("ShowOutlookAccounts",POL%,1) return information_dossiers_1: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookFolderList",POL%,0,handle(1001)) message text$(1001) return
information_dossiers_2: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookFolderList",POL%,1,handle(1001)) message text$(1001) return
information_dossiers_3: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookFolderList",POL%,2,handle(1001)) message text$(1001) return information_comptes_1: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookAccountList",POL%,0,handle(1001)) message text$(1001) return
information_comptes_2: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookAccountList",POL%,1,handle(1001)) message text$(1001) return
information_comptes_3: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookAccountList",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: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookMailList",POL%,1,handle(1001)) message text$(1001) return
information_mails_3: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookMailList",POL%,2,handle(1001)) message text$(1001) return information_mail1: if POL%=0 then return 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: if POL%=0 then return 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 action_deplacer: if POL%=0 then return if MailChoisi%=0 message "Aucun mail choisi" return end_if if DossierChoisi%=0 message "Aucun dossier choisi" return end_if res% = dll_call3("MoveOutlookMail",POL%,MailChoisi%,DossierChoisi%) MailChoisi% = 0 return action_creer_mail_programme: if POL%=0 then return if contact%=0 message "Il faut choisir un contact d'abord !" return end_if ' préparer les pièces jointes clear 1101 item_add 1101,"KGF.ilb" : ' placer ici le nom d'un fichier des pièce jointe, ou laisser le mémo vide ' ... autant de lignes Attachment que nécessaires, une ligne par pièce jointe clear 1001 item_add 1001,"première ligne du mail" item_add 1001,"... placer ici le reste du mail" : ' autant de lignes que nécessaire... s$ = "Mail test généré par programme" : ' placer ici le sujet du mail ' contact% est l'objet contact sélectionné dans le sélecteur des contacts, retourné par USER_EVENT res% = dll_call6("SendOutlookMail",POL%,contact%,adr(s$),handle(1101),handle(1001),0) : ' le 0 signifie "pas de fenêtre Outlook de saisie mais envoi direct" message str$(res%) return
action_creer_mail_dialog: if POL%=0 then return if contact%=0 message "Il faut choisir un contact d'abord !" return end_if ' préparer les pièces jointes clear 1101 item_add 1101,"KGF.ilb" : ' placer ici le nom d'un fichier des pièce jointe, ou laisser le mémo vide ' ... autant de lignes Attachment que nécessaires, une ligne par pièce jointe clear 1001 item_add 1001,"première ligne du mail" item_add 1001,"... placer ici le reste du mail" : ' autant de lignes que nécessaire... s$ = "Mail test généré par programme" : ' placer ici le sujet du mail ' contact% est l'objet contact sélectionné dans le sélecteur des contacts, retourné par USER_EVENT res% = dll_call6("SendOutlookMail",POL%,contact%,adr(s$),handle(1101),handle(1001),1) : ' le signifie "fenêtre Outlook de saisie" if res%=0 message "Mail envoyé" else message "Erreur - mail non envoyé" end_if return action_chercher_contact_nom: if POL%=0 then return s$ = "Klaus" res% = dll_call2("GetOutlookContactByName",POL%,adr(s$)) return
action_chercher_contact_nom_suivant: if POL%=0 then return s$ = "Klaus" res% = dll_call3("GetNextOutlookContactByName",POL%,contact%,adr(s$)) return
| |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 25 Fév 2021 - 15:24 | |
| Snif...je n'ai pas Outlook... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Interface avec Outlook Jeu 25 Fév 2021 - 16:01 | |
| Nouvelle étape: L'interface se "souvient" maintenant de la dernière date et heure de vérification des nouveaux mails. Et lors d'un redémarragedu programme, il récupère non seulement les mails reçus à partir de son lancement, mais également ceux arrivés entre son dernier arrêt et le nouveau lancement. Plus rien n'échappe ! Bien entendu, ce comportement est paramétrable et peut être désactivé à tout moment. Voici le programme de démo qui gère cela. Pour tester: - lancer le programme de démo -recevoir 1 ou plusieurs mails - attendre un peu (le délai est actuellement fixé à 1 minute) ==> chaque nouveau mail reçu est signalé avec sun sujet et son expéditeur - arrêter le programme - recevoir plusieurs mails; en attendant un temps quelconque - relancer le programme de démo - attendre un peu que le timer de 1 minute se déclenche ==> tous les mails reçus entre l'arrêt précédent et le nouveau démarrage seront maintenant signalés - Code:
-
' test_Outlook_2007.bas
label creer, deplacer, agrandir, cacher, montrer, 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, navigation_dossier_oui, navigation_dossier_non label action_deplacer, action_creer_mail_programme, action_creer_mail_dialog, action_chercher_contact_nom label action_chercher_contact_nom_suivant, navigation_comptes_oui, navigation_comptes_non label information_comptes_1, information_comptes_2, information_comptes_3
dim res%, POL%, s$, s1$, mail%, i% dim Dossier%, MailIndex%, PieceIndex%, Sujet$, Expediteur$, Adresse$, Contact%, MailChoisi%, DossierChoisi% dim CompteParDefaut%
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,"Cacher l'interface" : on_click 114,cacher sub_menu 115 : parent 115,11 : caption 115,"Montrer l'interface" : on_click 115,montrer sub_menu 116 : parent 116,11 : caption 116,"-" sub_menu 117 : parent 117,11 : caption 117,"Sortir" : on_click 117,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 215 : parent 215,21 : caption 215,"Afficher le sélecteur des dossiers" : on_click 215,navigation_dossier_oui sub_menu 216 : parent 216,21 : caption 216,"Cacher le sélecteur des dossiers" : on_click 216,navigation_dossier_non sub_menu 217 : parent 217,21 : caption 217,"Afficher le sélecteur des comptes" : on_click 217,navigation_comptes_oui sub_menu 218 : parent 218,21 : caption 218,"Cacher le sélecteur des comptes" : on_click 218,navigation_comptes_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 comptes - noms" : on_click 315,information_Comptes_1 sub_menu 316 : parent 316,31 : caption 316,"Liste des comptes - objets" : on_click 316,information_Comptes_2 sub_menu 317 : parent 317,31 : caption 317,"Liste des comptes - noms et objets" : on_click 317,information_Comptes_3 sub_menu 318 : parent 318,31 : caption 318,"-" sub_menu 319 : parent 319,31 : caption 319,"Liste des mails - noms" : on_click 319,information_mails_1 sub_menu 320 : parent 320,31 : caption 320,"Liste des mails - objets" : on_click 320,information_mails_2 sub_menu 321 : parent 321,31 : caption 321,"Liste des mails - noms et objets" : on_click 321,information_mails_3 sub_menu 322 : parent 322,31 : caption 322,"-" sub_menu 323 : parent 323,31 : caption 323,"Informations mail 1" : on_click 323,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 sub_menu 412 : parent 412,41 : caption 412,"Déplacer un mail" : on_click 412,action_deplacer sub_menu 413 : parent 413,41 : caption 413,"Créer un mail par programme" : on_click 413,action_creer_mail_programme sub_menu 414 : parent 414,41 : caption 414,"Créer un mail avec dialogue" : on_click 414,action_creer_mail_dialog sub_menu 415 : parent 415,41 : caption 415,"Chercher un contact par son nom" : on_click 415,action_chercher_contact_nom sub_menu 416 : parent 416,41 : caption 416,"Chercher un contact suivant par son nom" : on_click 416,action_chercher_contact_nom_suivant width 0,800 memo 1001 : hide 1001 : bar_both 1001 memo 1101 : hide 1101 : bar_both 1101 memo 1102 : hide 1102 : bar_both 1102
container 1002 : top 1002,height_client(0)-80 : left 1002,10 width 1002,width_client(0) : height 1002,height_client(0) - top(1002) caption 1002,"Etat de l'interface Panoramic - Outlook" alpha 1003 : parent 1003,1002 : top 1003,20 : left 1003,10 : parent 1003,1002 : caption 1003,"Etat de l'interface:" edit 1004 : inactive 1004 : top 1004,20 : left 1004,100 : parent 1004,1002 : font_bold 1004 : text 1004,"Non connecté" alpha 1005 : parent 1005,1002 : top 1005,10 : left 1005,240 : parent 1005,1002 : caption 1005,"Dossier choisi:" edit 1006 : inactive 1006 : top 1006,10 : left 1006,320 : width 1006,200 : parent 1006,1002 : font_bold 1006 : text 1006,"<aucun>" alpha 1060 : top 1060,10 : left 1060,530 : parent 1060,1002 : caption 1060,"===>" edit 1061 : inactive 1061 : top 1061,10 : left 1061,560 : width 1061,200 : parent 1061,1002 : font_bold 1061 : text 1061,"<aucun>"
alpha 1007 : parent 1007,1002 : top 1007,30 : left 1007,240 : parent 1007,1002 : caption 1007,"Contact choisi:" edit 1008 : inactive 1008 : top 1008,30 : left 1008,320 : width 1008,200 : parent 1008,1002 : font_bold 1008 : text 1008,"<aucun>" alpha 1009 : parent 1009,1002 : top 1009,50 : left 1009,10 : parent 1009,1002 : caption 1009,"Email choisi:" edit 1010 : inactive 1010 : top 1010,50 : left 1010,100 : width 1010,420 : parent 1010,1002 : font_bold 1010 : text 1010,"<aucun>"
alpha 1011 : top 1011,35 : left 1011,530 : parent 1011,1002: caption 1011,"Compte:" edit 1012 : inactive 1012 : top 1012,50 : left 1012,560 : width 1012,200 : parent 1012,1002 : font_bold 1012 : text 1012,"<aucun>"
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,800 height 0,700 top 1002,height_client(0)-80 : width 1002,width_client(0) - 20 POL% = dll_call4("CreateOutlook",handle(0),10,10,1) text 1004,"Connecté" s$ = string$(200," ") res% = dll_call6("GetOutlookInformation",POL%,7,0,adr(s$),0,0) s$ = trim$(s$) text 1012,s$ s$ = string$(30," ") res% = dll_call6("GetOutlookInformation",POL%,9,0,adr(s$),0,0) caption 0,"Outlook version "+trim$(s$) res% = dll_call4("SetOutlookNewMailMemo",POL%,handle(1102),1,2) return deplacer: if POL%=0 then return full_space 0 res% = dll_call3("LocateOutlook",POL%,0,0) top 1002,height_client(0)-100 : left 1002,0 : width 1002,width_client(0) return agrandir: if POL%=0 then return res% = dll_call5("ResizeOutlook",POL%,width_client(0),height_client(0)-100,400,200) top 1002,height_client(0)-100 : width 1002,width_client(0) return cacher: if POL%=0 then return res% = dll_call2("OutlookVisibility",POL%,0) return montrer: if POL%=0 then return res% = dll_call2("OutlookVisibility",POL%,1) 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," ") Dossier% = dll_call6("GetOutlookInformation",POL%,1,0,adr(s$),0,0) : ' dossier% contient l'objet du dossier s$ = trim$(s$) text 1006,s$ message "Dossier choisi: "+s$ return 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," ") MailChoisi% = dll_call6("GetOutlookInformation",POL%,2,USER_EVENT_LPARAM,adr(Sujet$),adr(Expediteur$),adr(Adresse$)) Sujet$ = trim$(Sujet$) Expediteur$ = trim$(Expediteur$) Adresse$ = trim$(Adresse$) text 1010,sujet$ message "Mail choisi: "+Sujet$+chr$(13)+chr$(10)+"De: "+Expediteur$+" Mail: "+Adresse$+chr$(13)+chr$(10)+" Objet mail="+str$(MailChoisi%) return 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$ : ' 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 return 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)) for i%=1 to count(1001) s$ = item_read$(1001,i%) if left$(s$,9)="FullName=" text 1008,mid$(s$,10,len(s$)) exit_for end_if next i% message text$(1001) return end_if
if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00050000") : ' est-ce une sélection de dossier dans le sélecteur des dossiers ? DossierChoisi% = USER_EVENT_LPARAM : ' USER_EVENT_LPARAM contient l'objet Dossier s$ = string$(200," ") res% = dll_call6("GetOutlookInformation",POL%,6,DossierChoisi%,adr(s$),0,0) s$ = trim$(s$) text 1061,s$ message "Dossier choisi: "+s$ return end_if
if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00060000") : ' est-ce une sélection de compte dans le sélecteur des comptes ? CompteParDefaut% = USER_EVENT_LPARAM : ' USER_EVENT_LPARAM contient l'objet Compte clear 1001 res% = dll_call6("GetOutlookInformation",POL%,8,CompteParDefaut%,handle(1001),0,0) s$ = text$(1001) message "Compte choisi: "+chr$(13)+chr$(10)+s$ for i%=1 to count(1001) s$ = item_read$(1001,i%) if left$(s$,10)="UserName=" s$ = mid$(s$,11,len(s$)) exit_for end_if next i% text 1012,s$ return end_if
if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00070000") : ' est-ce qu'on a reçu de nouveaux mails ? ' USER_EVENT_LPARAM contient le nombre de nouveaux mails ' message str$(USER_EVENT_LPARAM)+" nouveaux mails:"+chr$(13)+chr$(10)+text$(1102) if count(1102)>0 ' traiter les nouvaux mails while count(1102)>0 ' ici, traiter le mail dans item_read$(1102,1) mail% = val(item_read$(1102,1)) Sujet$ = string$(200," ") Expediteur$ = string$(200," ") Adresse$ = string$(200," ") res% = dll_call6("GetOutlookInformation",POL%,10,mail%,adr(Sujet$),adr(Expediteur$),adr(Adresse$)) Sujet$ = trim$(Sujet$) Expediteur$ = trim$(Expediteur$) Adresse$ = trim$(Adresse$) message "Mail reçu: "+Sujet$+chr$(13)+chr$(10)+"De: "+Expediteur$+" Mail: "+Adresse$+chr$(13)+chr$(10)+" Objet mail="+str$(MailChoisi%) ' et le supprimer de la liste item_delete 1102,1 end_while end_if return end_if
end_if return navigation_reception: if POL%=0 then return s$ = "Boîte de réception" res% = dll_call3("SelectOutlookFolder",POL%,adr(s$),1) return navigation_contacts_non: if POL%=0 then return res% = dll_call2("ShowOutlookContacts",POL%,0) return navigation_contacts_oui: if POL%=0 then return res% = dll_call2("ShowOutlookContacts",POL%,1) return navigation_dossier_oui: if POL%=0 then return res% = dll_call2("ShowOutlookFolderSelector",POL%,1) return navigation_dossier_non: if POL%=0 then return res% = dll_call2("ShowOutlookFolderSelector",POL%,0) return navigation_comptes_non: if POL%=0 then return res% = dll_call2("ShowOutlookAccounts",POL%,0) return navigation_comptes_Oui: if POL%=0 then return res% = dll_call2("ShowOutlookAccounts",POL%,1) return information_dossiers_1: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookFolderList",POL%,0,handle(1001)) message text$(1001) return
information_dossiers_2: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookFolderList",POL%,1,handle(1001)) message text$(1001) return
information_dossiers_3: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookFolderList",POL%,2,handle(1001)) message text$(1001) return information_comptes_1: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookAccountList",POL%,0,handle(1001)) message text$(1001) return
information_comptes_2: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookAccountList",POL%,1,handle(1001)) message text$(1001) return
information_comptes_3: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookAccountList",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: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookMailList",POL%,1,handle(1001)) message text$(1001) return
information_mails_3: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookMailList",POL%,2,handle(1001)) message text$(1001) return information_mail1: if POL%=0 then return 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: if POL%=0 then return 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 action_deplacer: if POL%=0 then return if MailChoisi%=0 message "Aucun mail choisi" return end_if if DossierChoisi%=0 message "Aucun dossier choisi" return end_if res% = dll_call3("MoveOutlookMail",POL%,MailChoisi%,DossierChoisi%) MailChoisi% = 0 return action_creer_mail_programme: if POL%=0 then return if contact%=0 message "Il faut choisir un contact d'abord !" return end_if ' préparer les pièces jointes clear 1101 item_add 1101,"KGF.ilb" : ' placer ici le nom d'un fichier des pièce jointe, ou laisser le mémo vide ' ... autant de lignes Attachment que nécessaires, une ligne par pièce jointe clear 1001 item_add 1001,"première ligne du mail" item_add 1001,"... placer ici le reste du mail" : ' autant de lignes que nécessaire... s$ = "Mail test généré par programme" : ' placer ici le sujet du mail ' contact% est l'objet contact sélectionné dans le sélecteur des contacts, retourné par USER_EVENT res% = dll_call6("SendOutlookMail",POL%,contact%,adr(s$),handle(1101),handle(1001),0) : ' le 0 signifie "pas de fenêtre Outlook de saisie mais envoi direct" message str$(res%) return
action_creer_mail_dialog: if POL%=0 then return if contact%=0 message "Il faut choisir un contact d'abord !" return end_if ' préparer les pièces jointes clear 1101 item_add 1101,"KGF.ilb" : ' placer ici le nom d'un fichier des pièce jointe, ou laisser le mémo vide ' ... autant de lignes Attachment que nécessaires, une ligne par pièce jointe clear 1001 item_add 1001,"première ligne du mail" item_add 1001,"... placer ici le reste du mail" : ' autant de lignes que nécessaire... s$ = "Mail test généré par programme" : ' placer ici le sujet du mail ' contact% est l'objet contact sélectionné dans le sélecteur des contacts, retourné par USER_EVENT res% = dll_call6("SendOutlookMail",POL%,contact%,adr(s$),handle(1101),handle(1001),1) : ' le signifie "fenêtre Outlook de saisie" if res%=0 message "Mail envoyé" else message "Erreur - mail non envoyé" end_if return action_chercher_contact_nom: if POL%=0 then return s$ = "Klaus" res% = dll_call2("GetOutlookContactByName",POL%,adr(s$)) return
action_chercher_contact_nom_suivant: if POL%=0 then return s$ = "Klaus" res% = dll_call3("GetNextOutlookContactByName",POL%,contact%,adr(s$)) return
Dans ce programme de démo, le "traitment" des nouveaux mails reçus se limite à les "signaler". Bien sûr, dans une application réelle, il y aurait un traitement spécifique (déplacer dans un autre dossier, filtrer les spams, supprimer les mails d'expéditeurs indésirables, ...). | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Interface avec Outlook Sam 27 Fév 2021 - 14:51 | |
| Nouvelle étape: On peut maintenant connaître la liste de toutes les clés registre spécifiques à KGF.dll, avec toutes les valeurs associées.Pour l'heure, seule la clé pour OutlookInterface aves ses deux valeurs est définie. Pour cela, une nouvelle ligne a été ajouté au menu "Fichiers: "Montrer les clés registre pour KGF"Cela fonctionne dès le lancement du programme - inutile de "créer" l'interface Outlook pour cela. Voici le programme de démo adapté: - Code:
-
' test_Outlook_2007.bas
label creer, deplacer, agrandir, cacher, montrer, montrer_cles, 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, navigation_dossier_oui, navigation_dossier_non label action_deplacer, action_creer_mail_programme, action_creer_mail_dialog, action_chercher_contact_nom label action_chercher_contact_nom_suivant, navigation_comptes_oui, navigation_comptes_non label information_comptes_1, information_comptes_2, information_comptes_3
dim res%, POL%, s$, s1$, mail%, i% dim Dossier%, MailIndex%, PieceIndex%, Sujet$, Expediteur$, Adresse$, Contact%, MailChoisi%, DossierChoisi% dim CompteParDefaut%
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,"Cacher l'interface" : on_click 114,cacher sub_menu 115 : parent 115,11 : caption 115,"Montrer l'interface" : on_click 115,montrer sub_menu 116 : parent 116,11 : caption 116,"-" sub_menu 117 : parent 117,11 : caption 117,"Montrer les clés registre pour KGF" : on_click 117,montrer_cles sub_menu 118 : parent 118,11 : caption 118,"-" sub_menu 119 : parent 119,11 : caption 119,"Sortir" : on_click 119,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 215 : parent 215,21 : caption 215,"Afficher le sélecteur des dossiers" : on_click 215,navigation_dossier_oui sub_menu 216 : parent 216,21 : caption 216,"Cacher le sélecteur des dossiers" : on_click 216,navigation_dossier_non sub_menu 217 : parent 217,21 : caption 217,"Afficher le sélecteur des comptes" : on_click 217,navigation_comptes_oui sub_menu 218 : parent 218,21 : caption 218,"Cacher le sélecteur des comptes" : on_click 218,navigation_comptes_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 comptes - noms" : on_click 315,information_Comptes_1 sub_menu 316 : parent 316,31 : caption 316,"Liste des comptes - objets" : on_click 316,information_Comptes_2 sub_menu 317 : parent 317,31 : caption 317,"Liste des comptes - noms et objets" : on_click 317,information_Comptes_3 sub_menu 318 : parent 318,31 : caption 318,"-" sub_menu 319 : parent 319,31 : caption 319,"Liste des mails - noms" : on_click 319,information_mails_1 sub_menu 320 : parent 320,31 : caption 320,"Liste des mails - objets" : on_click 320,information_mails_2 sub_menu 321 : parent 321,31 : caption 321,"Liste des mails - noms et objets" : on_click 321,information_mails_3 sub_menu 322 : parent 322,31 : caption 322,"-" sub_menu 323 : parent 323,31 : caption 323,"Informations mail 1" : on_click 323,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 sub_menu 412 : parent 412,41 : caption 412,"Déplacer un mail" : on_click 412,action_deplacer sub_menu 413 : parent 413,41 : caption 413,"Créer un mail par programme" : on_click 413,action_creer_mail_programme sub_menu 414 : parent 414,41 : caption 414,"Créer un mail avec dialogue" : on_click 414,action_creer_mail_dialog sub_menu 415 : parent 415,41 : caption 415,"Chercher un contact par son nom" : on_click 415,action_chercher_contact_nom sub_menu 416 : parent 416,41 : caption 416,"Chercher un contact suivant par son nom" : on_click 416,action_chercher_contact_nom_suivant width 0,800 memo 1001 : hide 1001 : bar_both 1001 memo 1101 : hide 1101 : bar_both 1101 memo 1102 : hide 1102 : bar_both 1102
container 1002 : top 1002,height_client(0)-80 : left 1002,10 width 1002,width_client(0) : height 1002,height_client(0) - top(1002) caption 1002,"Etat de l'interface Panoramic - Outlook" alpha 1003 : parent 1003,1002 : top 1003,20 : left 1003,10 : parent 1003,1002 : caption 1003,"Etat de l'interface:" edit 1004 : inactive 1004 : top 1004,20 : left 1004,100 : parent 1004,1002 : font_bold 1004 : text 1004,"Non connecté" alpha 1005 : parent 1005,1002 : top 1005,10 : left 1005,240 : parent 1005,1002 : caption 1005,"Dossier choisi:" edit 1006 : inactive 1006 : top 1006,10 : left 1006,320 : width 1006,200 : parent 1006,1002 : font_bold 1006 : text 1006,"<aucun>" alpha 1060 : top 1060,10 : left 1060,530 : parent 1060,1002 : caption 1060,"===>" edit 1061 : inactive 1061 : top 1061,10 : left 1061,560 : width 1061,200 : parent 1061,1002 : font_bold 1061 : text 1061,"<aucun>"
alpha 1007 : parent 1007,1002 : top 1007,30 : left 1007,240 : parent 1007,1002 : caption 1007,"Contact choisi:" edit 1008 : inactive 1008 : top 1008,30 : left 1008,320 : width 1008,200 : parent 1008,1002 : font_bold 1008 : text 1008,"<aucun>" alpha 1009 : parent 1009,1002 : top 1009,50 : left 1009,10 : parent 1009,1002 : caption 1009,"Email choisi:" edit 1010 : inactive 1010 : top 1010,50 : left 1010,100 : width 1010,420 : parent 1010,1002 : font_bold 1010 : text 1010,"<aucun>"
alpha 1011 : top 1011,35 : left 1011,530 : parent 1011,1002: caption 1011,"Compte:" edit 1012 : inactive 1012 : top 1012,50 : left 1012,560 : width 1012,200 : parent 1012,1002 : font_bold 1012 : text 1012,"<aucun>"
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,800 height 0,700 top 1002,height_client(0)-80 : width 1002,width_client(0) - 20 POL% = dll_call4("CreateOutlook",handle(0),10,10,1) text 1004,"Connecté" s$ = string$(200," ") res% = dll_call6("GetOutlookInformation",POL%,7,0,adr(s$),0,0) s$ = trim$(s$) text 1012,s$ s$ = string$(30," ") res% = dll_call6("GetOutlookInformation",POL%,9,0,adr(s$),0,0) caption 0,"Outlook version "+trim$(s$) res% = dll_call4("SetOutlookNewMailMemo",POL%,handle(1102),1,2) return deplacer: if POL%=0 then return full_space 0 res% = dll_call3("LocateOutlook",POL%,0,0) top 1002,height_client(0)-100 : left 1002,0 : width 1002,width_client(0) return agrandir: if POL%=0 then return res% = dll_call5("ResizeOutlook",POL%,width_client(0),height_client(0)-100,400,200) top 1002,height_client(0)-100 : width 1002,width_client(0) return cacher: if POL%=0 then return res% = dll_call2("OutlookVisibility",POL%,0) return montrer: if POL%=0 then return res% = dll_call2("OutlookVisibility",POL%,1) return montrer_cles: res% = dll_call1("GetAllRegistryKeysForKGF",handle(1102)) message text$(1102) clear 1102 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," ") Dossier% = dll_call6("GetOutlookInformation",POL%,1,0,adr(s$),0,0) : ' dossier% contient l'objet du dossier s$ = trim$(s$) text 1006,s$ message "Dossier choisi: "+s$ return 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," ") MailChoisi% = dll_call6("GetOutlookInformation",POL%,2,USER_EVENT_LPARAM,adr(Sujet$),adr(Expediteur$),adr(Adresse$)) Sujet$ = trim$(Sujet$) Expediteur$ = trim$(Expediteur$) Adresse$ = trim$(Adresse$) text 1010,sujet$ message "Mail choisi: "+Sujet$+chr$(13)+chr$(10)+"De: "+Expediteur$+" Mail: "+Adresse$+chr$(13)+chr$(10)+" Objet mail="+str$(MailChoisi%) return 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$ : ' 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 return 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)) for i%=1 to count(1001) s$ = item_read$(1001,i%) if left$(s$,9)="FullName=" text 1008,mid$(s$,10,len(s$)) exit_for end_if next i% message text$(1001) return end_if
if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00050000") : ' est-ce une sélection de dossier dans le sélecteur des dossiers ? DossierChoisi% = USER_EVENT_LPARAM : ' USER_EVENT_LPARAM contient l'objet Dossier s$ = string$(200," ") res% = dll_call6("GetOutlookInformation",POL%,6,DossierChoisi%,adr(s$),0,0) s$ = trim$(s$) text 1061,s$ message "Dossier choisi: "+s$ return end_if
if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00060000") : ' est-ce une sélection de compte dans le sélecteur des comptes ? CompteParDefaut% = USER_EVENT_LPARAM : ' USER_EVENT_LPARAM contient l'objet Compte clear 1001 res% = dll_call6("GetOutlookInformation",POL%,8,CompteParDefaut%,handle(1001),0,0) s$ = text$(1001) message "Compte choisi: "+chr$(13)+chr$(10)+s$ for i%=1 to count(1001) s$ = item_read$(1001,i%) if left$(s$,10)="UserName=" s$ = mid$(s$,11,len(s$)) exit_for end_if next i% text 1012,s$ return end_if
if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00070000") : ' est-ce qu'on a reçu de nouveaux mails ? ' USER_EVENT_LPARAM contient le nombre de nouveaux mails ' message str$(USER_EVENT_LPARAM)+" nouveaux mails:"+chr$(13)+chr$(10)+text$(1102) if count(1102)>0 ' traiter les nouvaux mails while count(1102)>0 ' ici, traiter le mail dans item_read$(1102,1) mail% = val(item_read$(1102,1)) Sujet$ = string$(200," ") Expediteur$ = string$(200," ") Adresse$ = string$(200," ") res% = dll_call6("GetOutlookInformation",POL%,10,mail%,adr(Sujet$),adr(Expediteur$),adr(Adresse$)) Sujet$ = trim$(Sujet$) Expediteur$ = trim$(Expediteur$) Adresse$ = trim$(Adresse$) message "Mail reçu: "+Sujet$+chr$(13)+chr$(10)+"De: "+Expediteur$+" Mail: "+Adresse$+chr$(13)+chr$(10)+" Objet mail="+str$(MailChoisi%) ' et le supprimer de la liste item_delete 1102,1 end_while end_if return end_if
end_if return navigation_reception: if POL%=0 then return s$ = "Boîte de réception" res% = dll_call3("SelectOutlookFolder",POL%,adr(s$),1) return navigation_contacts_non: if POL%=0 then return res% = dll_call2("ShowOutlookContacts",POL%,0) return navigation_contacts_oui: if POL%=0 then return res% = dll_call2("ShowOutlookContacts",POL%,1) return navigation_dossier_oui: if POL%=0 then return res% = dll_call2("ShowOutlookFolderSelector",POL%,1) return navigation_dossier_non: if POL%=0 then return res% = dll_call2("ShowOutlookFolderSelector",POL%,0) return navigation_comptes_non: if POL%=0 then return res% = dll_call2("ShowOutlookAccounts",POL%,0) return navigation_comptes_Oui: if POL%=0 then return res% = dll_call2("ShowOutlookAccounts",POL%,1) return information_dossiers_1: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookFolderList",POL%,0,handle(1001)) message text$(1001) return
information_dossiers_2: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookFolderList",POL%,1,handle(1001)) message text$(1001) return
information_dossiers_3: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookFolderList",POL%,2,handle(1001)) message text$(1001) return information_comptes_1: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookAccountList",POL%,0,handle(1001)) message text$(1001) return
information_comptes_2: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookAccountList",POL%,1,handle(1001)) message text$(1001) return
information_comptes_3: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookAccountList",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: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookMailList",POL%,1,handle(1001)) message text$(1001) return
information_mails_3: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookMailList",POL%,2,handle(1001)) message text$(1001) return information_mail1: if POL%=0 then return 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: if POL%=0 then return 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 action_deplacer: if POL%=0 then return if MailChoisi%=0 message "Aucun mail choisi" return end_if if DossierChoisi%=0 message "Aucun dossier choisi" return end_if res% = dll_call3("MoveOutlookMail",POL%,MailChoisi%,DossierChoisi%) MailChoisi% = 0 return action_creer_mail_programme: if POL%=0 then return if contact%=0 message "Il faut choisir un contact d'abord !" return end_if ' préparer les pièces jointes clear 1101 item_add 1101,"KGF.ilb" : ' placer ici le nom d'un fichier des pièce jointe, ou laisser le mémo vide ' ... autant de lignes Attachment que nécessaires, une ligne par pièce jointe clear 1001 item_add 1001,"première ligne du mail" item_add 1001,"... placer ici le reste du mail" : ' autant de lignes que nécessaire... s$ = "Mail test généré par programme" : ' placer ici le sujet du mail ' contact% est l'objet contact sélectionné dans le sélecteur des contacts, retourné par USER_EVENT res% = dll_call6("SendOutlookMail",POL%,contact%,adr(s$),handle(1101),handle(1001),0) : ' le 0 signifie "pas de fenêtre Outlook de saisie mais envoi direct" message str$(res%) return
action_creer_mail_dialog: if POL%=0 then return if contact%=0 message "Il faut choisir un contact d'abord !" return end_if ' préparer les pièces jointes clear 1101 item_add 1101,"KGF.ilb" : ' placer ici le nom d'un fichier des pièce jointe, ou laisser le mémo vide ' ... autant de lignes Attachment que nécessaires, une ligne par pièce jointe clear 1001 item_add 1001,"première ligne du mail" item_add 1001,"... placer ici le reste du mail" : ' autant de lignes que nécessaire... s$ = "Mail test généré par programme" : ' placer ici le sujet du mail ' contact% est l'objet contact sélectionné dans le sélecteur des contacts, retourné par USER_EVENT res% = dll_call6("SendOutlookMail",POL%,contact%,adr(s$),handle(1101),handle(1001),1) : ' le signifie "fenêtre Outlook de saisie" if res%=0 message "Mail envoyé" else message "Erreur - mail non envoyé" end_if return action_chercher_contact_nom: if POL%=0 then return s$ = "Klaus" res% = dll_call2("GetOutlookContactByName",POL%,adr(s$)) return
action_chercher_contact_nom_suivant: if POL%=0 then return s$ = "Klaus" res% = dll_call3("GetNextOutlookContactByName",POL%,contact%,adr(s$)) return
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Interface avec Outlook Dim 28 Fév 2021 - 11:16 | |
| Voici un bref résumé des fonctionnalités de l'interface Outlook:
C'est un objet non visuel, doublé d'un afficheur reflétant les parties importantes de l'interface.
La partie visuelle montre la liste des dossiers des mails de Outlook, un sélecteur de contacts, un sélecteur de dossiers et un sélecteur de comptes Outlook. Un clic dans une de ces parties affiche son contenu dans une zone d'affichage et sélectionne cet élément pour les traitements ultérieurs.
Un clic dans la liste des dossiers par exemple affiche la liste des sujets des mails présents dans ce dossier. Un clic sur un de ces sujets affiche le contenu du mail, nom et adresse mail de l'expéditeur et la liste des pièces jointes. Un clic sur une des pièces jointes permet de télécharger ce fichier.
Mais la partie visuelle, bien que toujours créée et présente, peut être cachée (non visible). Toutes les fonctions obtenues par des clics dans la partie visible peuvent être obtenues par des appels à des fonctions de service de l'interface. Pour cela, une série de fonctions permet de retourner des listes d'informations: dossiers, mails du dossier choisi, contacts, comptes etc. Une autre série de fonctions permet de sélectionner un dossier, un mail, un compte ou un contact. Il est donc parfaitement possible de créer une interface utilisateut "sur mesure" en Panoramic, selon les besoins du programme.
Une autre série de fonctions permet d'agir sur les données de l'interface et, à travers l'interface, sur le contenu de Outlook. On peut créer un mail, déplacer un mail dans un autre dossier, vider un dossier complètement (testé sur le dossier des éléments indésirables !) etc. La liste des actions est non exhaustive et elle va s'allonger au fur et à mesure.
L'interface signale les différents évènements à Panoramic via le mécanisme des USER_EVENT (sélection d'un dossier, d'un mail, d'une pièce détachée, réception d'un nouveau mail etc). Bien sûr, lorsque le programme utilisant l'interface est arrêté, les mails arrivant dans cette situation ne sont pas "tracés". Cependant, l'interface mémorise la date et l'heure de la dernière vérification de réception de mail. Cette vérification a lieu à des intervalles réguliers (défaut: 1 minute) et cette durée est paramétrable. Et l'interface peut être configurée pour "récupérer" les mails arrivées depuis la dernière vérification, lors d'un nouveau démarrage de l'interface.
Perspectives d'évolution: - ajouts d'actions dans la liste des actions, comme supprimer un mail, créer ou supprimer un dossier, créer ou supprimer un contact, extraire et archiver les mails d'un dossier ou d'un groupe de dossiers etc. - je commence à regarder ce que l'on peut faire pour OpenOffice. Je sais que OpenOffice ne contient pas nativement un client Email mais utilise le client Email présent sur le système est configuré dans OpenOffice dans le menu des options. L'écriture d'un mail est assuré par le Writer de OpenOffice. Je vais donc voir si je peux accéder à d'autres clients mail courants, comme Thunderbird. Dommage. Thunderbird n'est pas possible - pas d'interface OLS, pas d'iinterface d'automatisation. Je vais explorer d'autres clients Email gratuits...Après un rapide survol, je n'ai pas trouvé d'autres clients mail supportant le protocol OLE pour l'automatisation. Pour ceux parmi vous qui n'ont pas Outlook, qu'est-ce que vous uilisez comme client Email ? Je parle de clients locaux sous forme de EXE, pas d'un accès internet à un WebMail... | |
| | | 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 Dim 28 Fév 2021 - 12:57 | |
| Bonjour Klaus, bonjour à tous.
J' essaye de tester ton programme.
J' ai pris le programme du 25 Février, pour au moins voir les nouveaux messages.
Je ne vois pas les nouveaux messages arriver.
Une suggestion: peux tu trier les messages en tri descendant, afin d' avoir les nouveaux messages en tête.
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 Dim 28 Fév 2021 - 13:13 | |
| Merci d'avoir essayé. - Citation :
- J' ai pris le programme du 25 Février, pour au moins voir les nouveaux messages.
Je ne vois pas les nouveaux messages arriver. Le mieux est de prendre KGF.dll sur mon site (via la signture de ce post) - c'est la dernière version. Tu prends aussi la dernière version du programme de démo qui va avec. Pas sécurité, je la poste à nouveau ici: - Code:
-
' test_Outlook_2007.bas
label creer, deplacer, agrandir, cacher, montrer, montrer_cles, 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, navigation_dossier_oui, navigation_dossier_non label action_deplacer, action_creer_mail_programme, action_creer_mail_dialog, action_chercher_contact_nom label action_chercher_contact_nom_suivant, navigation_comptes_oui, navigation_comptes_non label information_comptes_1, information_comptes_2, information_comptes_3
dim res%, POL%, s$, s1$, mail%, i% dim Dossier%, MailIndex%, PieceIndex%, Sujet$, Expediteur$, Adresse$, Contact%, MailChoisi%, DossierChoisi% dim CompteParDefaut%
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,"Cacher l'interface" : on_click 114,cacher sub_menu 115 : parent 115,11 : caption 115,"Montrer l'interface" : on_click 115,montrer sub_menu 116 : parent 116,11 : caption 116,"-" sub_menu 117 : parent 117,11 : caption 117,"Montrer les clés registre pour KGF" : on_click 117,montrer_cles sub_menu 118 : parent 118,11 : caption 118,"-" sub_menu 119 : parent 119,11 : caption 119,"Sortir" : on_click 119,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 215 : parent 215,21 : caption 215,"Afficher le sélecteur des dossiers" : on_click 215,navigation_dossier_oui sub_menu 216 : parent 216,21 : caption 216,"Cacher le sélecteur des dossiers" : on_click 216,navigation_dossier_non sub_menu 217 : parent 217,21 : caption 217,"Afficher le sélecteur des comptes" : on_click 217,navigation_comptes_oui sub_menu 218 : parent 218,21 : caption 218,"Cacher le sélecteur des comptes" : on_click 218,navigation_comptes_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 comptes - noms" : on_click 315,information_Comptes_1 sub_menu 316 : parent 316,31 : caption 316,"Liste des comptes - objets" : on_click 316,information_Comptes_2 sub_menu 317 : parent 317,31 : caption 317,"Liste des comptes - noms et objets" : on_click 317,information_Comptes_3 sub_menu 318 : parent 318,31 : caption 318,"-" sub_menu 319 : parent 319,31 : caption 319,"Liste des mails - noms" : on_click 319,information_mails_1 sub_menu 320 : parent 320,31 : caption 320,"Liste des mails - objets" : on_click 320,information_mails_2 sub_menu 321 : parent 321,31 : caption 321,"Liste des mails - noms et objets" : on_click 321,information_mails_3 sub_menu 322 : parent 322,31 : caption 322,"-" sub_menu 323 : parent 323,31 : caption 323,"Informations mail 1" : on_click 323,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 sub_menu 412 : parent 412,41 : caption 412,"Déplacer un mail" : on_click 412,action_deplacer sub_menu 413 : parent 413,41 : caption 413,"Créer un mail par programme" : on_click 413,action_creer_mail_programme sub_menu 414 : parent 414,41 : caption 414,"Créer un mail avec dialogue" : on_click 414,action_creer_mail_dialog sub_menu 415 : parent 415,41 : caption 415,"Chercher un contact par son nom" : on_click 415,action_chercher_contact_nom sub_menu 416 : parent 416,41 : caption 416,"Chercher un contact suivant par son nom" : on_click 416,action_chercher_contact_nom_suivant width 0,800 memo 1001 : hide 1001 : bar_both 1001 memo 1101 : hide 1101 : bar_both 1101 memo 1102 : hide 1102 : bar_both 1102
container 1002 : top 1002,height_client(0)-80 : left 1002,10 width 1002,width_client(0) : height 1002,height_client(0) - top(1002) caption 1002,"Etat de l'interface Panoramic - Outlook" alpha 1003 : parent 1003,1002 : top 1003,20 : left 1003,10 : parent 1003,1002 : caption 1003,"Etat de l'interface:" edit 1004 : inactive 1004 : top 1004,20 : left 1004,100 : parent 1004,1002 : font_bold 1004 : text 1004,"Non connecté" alpha 1005 : parent 1005,1002 : top 1005,10 : left 1005,240 : parent 1005,1002 : caption 1005,"Dossier choisi:" edit 1006 : inactive 1006 : top 1006,10 : left 1006,320 : width 1006,200 : parent 1006,1002 : font_bold 1006 : text 1006,"<aucun>" alpha 1060 : top 1060,10 : left 1060,530 : parent 1060,1002 : caption 1060,"===>" edit 1061 : inactive 1061 : top 1061,10 : left 1061,560 : width 1061,200 : parent 1061,1002 : font_bold 1061 : text 1061,"<aucun>"
alpha 1007 : parent 1007,1002 : top 1007,30 : left 1007,240 : parent 1007,1002 : caption 1007,"Contact choisi:" edit 1008 : inactive 1008 : top 1008,30 : left 1008,320 : width 1008,200 : parent 1008,1002 : font_bold 1008 : text 1008,"<aucun>" alpha 1009 : parent 1009,1002 : top 1009,50 : left 1009,10 : parent 1009,1002 : caption 1009,"Email choisi:" edit 1010 : inactive 1010 : top 1010,50 : left 1010,100 : width 1010,420 : parent 1010,1002 : font_bold 1010 : text 1010,"<aucun>"
alpha 1011 : top 1011,35 : left 1011,530 : parent 1011,1002: caption 1011,"Compte:" edit 1012 : inactive 1012 : top 1012,50 : left 1012,560 : width 1012,200 : parent 1012,1002 : font_bold 1012 : text 1012,"<aucun>"
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,800 height 0,700 top 1002,height_client(0)-80 : width 1002,width_client(0) - 20 POL% = dll_call4("CreateOutlook",handle(0),10,10,1) text 1004,"Connecté" s$ = string$(200," ") res% = dll_call6("GetOutlookInformation",POL%,7,0,adr(s$),0,0) s$ = trim$(s$) text 1012,s$ s$ = string$(30," ") res% = dll_call6("GetOutlookInformation",POL%,9,0,adr(s$),0,0) caption 0,"Outlook version "+trim$(s$) res% = dll_call4("SetOutlookNewMailMemo",POL%,handle(1102),1,2) return deplacer: if POL%=0 then return full_space 0 res% = dll_call3("LocateOutlook",POL%,0,0) top 1002,height_client(0)-100 : left 1002,0 : width 1002,width_client(0) return agrandir: if POL%=0 then return res% = dll_call5("ResizeOutlook",POL%,width_client(0),height_client(0)-100,400,200) top 1002,height_client(0)-100 : width 1002,width_client(0) return cacher: if POL%=0 then return res% = dll_call2("OutlookVisibility",POL%,0) return montrer: if POL%=0 then return res% = dll_call2("OutlookVisibility",POL%,1) return montrer_cles: res% = dll_call1("GetAllRegistryKeysForKGF",handle(1102)) message text$(1102) clear 1102 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," ") Dossier% = dll_call6("GetOutlookInformation",POL%,1,0,adr(s$),0,0) : ' dossier% contient l'objet du dossier s$ = trim$(s$) text 1006,s$ message "Dossier choisi: "+s$ return 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," ") MailChoisi% = dll_call6("GetOutlookInformation",POL%,2,USER_EVENT_LPARAM,adr(Sujet$),adr(Expediteur$),adr(Adresse$)) Sujet$ = trim$(Sujet$) Expediteur$ = trim$(Expediteur$) Adresse$ = trim$(Adresse$) text 1010,sujet$ message "Mail choisi: "+Sujet$+chr$(13)+chr$(10)+"De: "+Expediteur$+" Mail: "+Adresse$+chr$(13)+chr$(10)+" Objet mail="+str$(MailChoisi%) return 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$ : ' 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 return 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)) for i%=1 to count(1001) s$ = item_read$(1001,i%) if left$(s$,9)="FullName=" text 1008,mid$(s$,10,len(s$)) exit_for end_if next i% message text$(1001) return end_if
if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00050000") : ' est-ce une sélection de dossier dans le sélecteur des dossiers ? DossierChoisi% = USER_EVENT_LPARAM : ' USER_EVENT_LPARAM contient l'objet Dossier s$ = string$(200," ") res% = dll_call6("GetOutlookInformation",POL%,6,DossierChoisi%,adr(s$),0,0) s$ = trim$(s$) text 1061,s$ message "Dossier choisi: "+s$ return end_if
if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00060000") : ' est-ce une sélection de compte dans le sélecteur des comptes ? CompteParDefaut% = USER_EVENT_LPARAM : ' USER_EVENT_LPARAM contient l'objet Compte clear 1001 res% = dll_call6("GetOutlookInformation",POL%,8,CompteParDefaut%,handle(1001),0,0) s$ = text$(1001) message "Compte choisi: "+chr$(13)+chr$(10)+s$ for i%=1 to count(1001) s$ = item_read$(1001,i%) if left$(s$,10)="UserName=" s$ = mid$(s$,11,len(s$)) exit_for end_if next i% text 1012,s$ return end_if
if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00070000") : ' est-ce qu'on a reçu de nouveaux mails ? ' USER_EVENT_LPARAM contient le nombre de nouveaux mails ' message str$(USER_EVENT_LPARAM)+" nouveaux mails:"+chr$(13)+chr$(10)+text$(1102) if count(1102)>0 ' traiter les nouvaux mails while count(1102)>0 ' ici, traiter le mail dans item_read$(1102,1) mail% = val(item_read$(1102,1)) Sujet$ = string$(200," ") Expediteur$ = string$(200," ") Adresse$ = string$(200," ") res% = dll_call6("GetOutlookInformation",POL%,10,mail%,adr(Sujet$),adr(Expediteur$),adr(Adresse$)) Sujet$ = trim$(Sujet$) Expediteur$ = trim$(Expediteur$) Adresse$ = trim$(Adresse$) message "Mail reçu: "+Sujet$+chr$(13)+chr$(10)+"De: "+Expediteur$+" Mail: "+Adresse$+chr$(13)+chr$(10)+" Objet mail="+str$(MailChoisi%) ' et le supprimer de la liste item_delete 1102,1 end_while end_if return end_if
end_if return navigation_reception: if POL%=0 then return s$ = "Boîte de réception" res% = dll_call3("SelectOutlookFolder",POL%,adr(s$),1) return navigation_contacts_non: if POL%=0 then return res% = dll_call2("ShowOutlookContacts",POL%,0) return navigation_contacts_oui: if POL%=0 then return res% = dll_call2("ShowOutlookContacts",POL%,1) return navigation_dossier_oui: if POL%=0 then return res% = dll_call2("ShowOutlookFolderSelector",POL%,1) return navigation_dossier_non: if POL%=0 then return res% = dll_call2("ShowOutlookFolderSelector",POL%,0) return navigation_comptes_non: if POL%=0 then return res% = dll_call2("ShowOutlookAccounts",POL%,0) return navigation_comptes_Oui: if POL%=0 then return res% = dll_call2("ShowOutlookAccounts",POL%,1) return information_dossiers_1: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookFolderList",POL%,0,handle(1001)) message text$(1001) return
information_dossiers_2: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookFolderList",POL%,1,handle(1001)) message text$(1001) return
information_dossiers_3: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookFolderList",POL%,2,handle(1001)) message text$(1001) return information_comptes_1: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookAccountList",POL%,0,handle(1001)) message text$(1001) return
information_comptes_2: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookAccountList",POL%,1,handle(1001)) message text$(1001) return
information_comptes_3: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookAccountList",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: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookMailList",POL%,1,handle(1001)) message text$(1001) return
information_mails_3: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookMailList",POL%,2,handle(1001)) message text$(1001) return information_mail1: if POL%=0 then return 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: if POL%=0 then return 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 action_deplacer: if POL%=0 then return if MailChoisi%=0 message "Aucun mail choisi" return end_if if DossierChoisi%=0 message "Aucun dossier choisi" return end_if res% = dll_call3("MoveOutlookMail",POL%,MailChoisi%,DossierChoisi%) MailChoisi% = 0 return action_creer_mail_programme: if POL%=0 then return if contact%=0 message "Il faut choisir un contact d'abord !" return end_if ' préparer les pièces jointes clear 1101 item_add 1101,"KGF.ilb" : ' placer ici le nom d'un fichier des pièce jointe, ou laisser le mémo vide ' ... autant de lignes Attachment que nécessaires, une ligne par pièce jointe clear 1001 item_add 1001,"première ligne du mail" item_add 1001,"... placer ici le reste du mail" : ' autant de lignes que nécessaire... s$ = "Mail test généré par programme" : ' placer ici le sujet du mail ' contact% est l'objet contact sélectionné dans le sélecteur des contacts, retourné par USER_EVENT res% = dll_call6("SendOutlookMail",POL%,contact%,adr(s$),handle(1101),handle(1001),0) : ' le 0 signifie "pas de fenêtre Outlook de saisie mais envoi direct" message str$(res%) return
action_creer_mail_dialog: if POL%=0 then return if contact%=0 message "Il faut choisir un contact d'abord !" return end_if ' préparer les pièces jointes clear 1101 item_add 1101,"KGF.ilb" : ' placer ici le nom d'un fichier des pièce jointe, ou laisser le mémo vide ' ... autant de lignes Attachment que nécessaires, une ligne par pièce jointe clear 1001 item_add 1001,"première ligne du mail" item_add 1001,"... placer ici le reste du mail" : ' autant de lignes que nécessaire... s$ = "Mail test généré par programme" : ' placer ici le sujet du mail ' contact% est l'objet contact sélectionné dans le sélecteur des contacts, retourné par USER_EVENT res% = dll_call6("SendOutlookMail",POL%,contact%,adr(s$),handle(1101),handle(1001),1) : ' le signifie "fenêtre Outlook de saisie" if res%=0 message "Mail envoyé" else message "Erreur - mail non envoyé" end_if return action_chercher_contact_nom: if POL%=0 then return s$ = "Klaus" res% = dll_call2("GetOutlookContactByName",POL%,adr(s$)) return
action_chercher_contact_nom_suivant: if POL%=0 then return s$ = "Klaus" res% = dll_call3("GetNextOutlookContactByName",POL%,contact%,adr(s$)) return
Après le lancement, les mails arrivant APRES le lancement seront signalés par me mécanisme des USER_EVENT, avec un message à l'écran pour chaque mail arrivant. Cependant, il faut attendre un peu (1 à deux minutes après l'arrivée des mails) pour laisser le temps au timer de se déclencher (1 minute npar défaut). - Citation :
- Une suggestion: peux tu trier les messages en tri descendant, afin d' avoir les nouveaux messages en tête.
Ca existe déjà ! Dans le tableau des mails du dossier choisi en haut à droite, tu cliques sur un des titres de colonne et le tableau sera autimatiquement trié selon se critère. Un nouveau clic sur le même titre trie le tableau dans l'ordre inverse. Donc, su tu cliques sur le titre de la colonne de réception... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Interface avec Outlook Lun 1 Mar 2021 - 13:18 | |
| Question aux utilisateurs de clients mail:
Mon projet Outlook Interface est ciblé Outlook de MicroSoft, comme son nom l'indique. J'ai regardé l'autre client mail de Microsoft: Windows Mail, mais ce produit, bien moins puissant d'ailleurs qu'Outlook, ne peut pas être "automatisée de la même manière. Aucune interface n'est prévué à ce sujet.
Et vous ? Quel client mail utilisez-vous si vous n'avez pas Outlook ? | |
| | | 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 Lun 1 Mar 2021 - 16:38 | |
| Bonjour Klaus, et bonjour à tous.
J' ai testé ce matin la dernière version du programme Test Outlook, et je ne reçois toujours pas les nouveaux messages, alors que je
suis sur d'avoir des messages du 28/02
J' ai un message en lançant le programme:
Panoramic_temp1: Regread: Software\KGF\outlookinterface, et cela 2 fois en suivant.
Cela me fait penser que c'est bien la dernière version de la dll.
J' ai essayé le programme dès que j'ai allume mon ordi.
J' ai ensuite mis en fonction Outlook, et je ne recevais toujours rien.
J'ai coupé et remis en fonction mon ordi et Outlook, et la j'ai reçu mes messages dans Outlook.
Je ne sais pas si ce que j’écris est compréhensible....
Bonne après midi à tous | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Interface avec Outlook Lun 1 Mar 2021 - 18:06 | |
| Je répète la marche à suivre: - lancer Outlook - afficher la boite de réception de Outlook, - trier la boite de réception sur date/heure d'arrivée (en cliquant sur le titre de la colonne "Reçu" - lancer le programme de démo - dans le menu "Fichier", cliquer sur l'option "Créer l'interface" ==> l'interface s'affiche, l'arboescence des dossiers se remplit, ==> deux messages "regread" apparaissant - c'est provisoire, pour les tests - dans Outlook, s'envoyer un mail à soi-même, avec un "objet" et un texte quelconue - dans Outlook, cliquer sur "Envoyer/recevoir" ==> le nouveau mail s'affichera - revenir à l'interface Outlook et ATTENDRE ! - au bout d'une à deux minutes, un message en provenance de l'interface s'affichera idntifiant le message reçu - cliquer sur la ligne "Boite de réception" dans l'arborescence des dossier de l'interface Outlook ==> tous les mails de la boite de réception s'affichent, du plus ancien au plus récent ==> ATTENTION ! En fonction du nombre de mails présents, cette phase peut être longue ! - cliquer sur le titre de la colonne "Date" dans la liste des mails à droite ==> les mails seront triés du plus récent au plus ancien - c'est très rapide ==> le nouveau mail adressé à soi-même est visible en début de liste - laisser l'interface actif, sans rien toucher ==> lorsqu'un nouveau mail arrive dans la boite de réception de Outlook, l'interface le signalera une à deux minutes plus tard ... - quitter l'interface - recevoir plusieurs mails dans Outlook, de sorte qu'ils soient visibles dans la boite de réception de Outlook - relancer l'interface Outlook ==> la liste des dossierd s'affiche à nouveau - après une à deux minutes d'attente, l'interface Outlook signale chaque mail reçu entretemps, avec un message spécifique par mail, rappelant le sujet du mail et l'expéditeur - pour voir ces mails apparaître dans la liste des mails de l'interface, il faut recliquer sur la "Boite de réception" dans la liste des dossiers de l'interface Outlook. LE panneau d'affichage des mails disponibles sera alors renouvellé, et les nouveaux mails reçus seront en tête de liste.
Voilà. Ne te laisse pas décourager la la longueur de la liste des actions à effectuer. Tu verras vite la logique sousjacente. L'essentiel est d'attendre là où il faut attendre... | |
| | | Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: Interface avec Outlook Lun 1 Mar 2021 - 22:12 | |
| Bonsoir à tous ! @Klaus : Après avoir totalement désinstallé Outlook, je l'ai réinstallé ce qui me permet d'avoir une nouvelle version 100% opérationnelle jusqu'au samedi 06 mars. - Spécifications techniques ::
et de l'interface KGF / Outlook : Remarque : Mon dossier de réception s'appelle Inbox- Spoiler:
Voici un petit compte rendu : - lancer Outlook - afficher la boite de réception de Outlook, - trier la boite de réception sur date/heure d'arrivée (en cliquant sur le titre de la colonne "Reçu" - lancer le programme de démo - dans le menu "Fichier", cliquer sur l'option "Créer l'interface" ==> l'interface s'affiche, l'arboescence des dossiers se remplit, ===> Ok !==> deux messages "regread" apparaissant - c'est provisoire, pour les tests ===> OK !- dans Outlook, s'envoyer un mail à soi-même, avec un "objet" et un texte quelconue - dans Outlook, cliquer sur "Envoyer/recevoir" ==> le nouveau mail s'affichera ===> OK !- revenir à l'interface Outlook et ATTENDRE ! - au bout d'une à deux minutes, un message en provenance de l'interface s'affichera idntifiant le message reçu === > Non, pas de message, même après 30mn d'attente.- cliquer sur la ligne "Boite de réception" dans l'arborescence des dossier de l'interface Outlook ==> tous les mails de la boite de réception s'affichent, du plus ancien au plus récent ===> OK !==> ATTENTION ! En fonction du nombre de mails présents, cette phase peut être longue ! - cliquer sur le titre de la colonne "Date" dans la liste des mails à droite ==> les mails seront triés du plus récent au plus ancien - c'est très rapide ===> OK !==> le nouveau mail adressé à soi-même est visible en début de liste ===> OK !- laisser l'interface actif, sans rien toucher ==> lorsqu'un nouveau mail arrive dans la boite de réception de Outlook, l'interface le signalera une à deux minutes plus tard ===> non, pas de message.... - quitter l'interface - recevoir plusieurs mails dans Outlook, de sorte qu'ils soient visibles dans la boite de réception de Outlook - relancer l'interface Outlook ==> la liste des dossierd s'affiche à nouveau ===> Ok !- après une à deux minutes d'attente, l'interface Outlook signale chaque mail reçu entretemps, avec un message spécifique par mail, rappelant le sujet du mail et l'expéditeur - pour voir ces mails apparaître dans la liste des mails de l'interface, il faut recliquer sur la "Boite de réception" dans la liste des dossiers de l'interface Outlook. LE panneau d'affichage des mails disponibles sera alors renouvellé, et les nouveaux mails reçus seront en tête de liste. ===> non, pas de message. Quand je clique sur le dossier Inbox, les nouveaux mails arrivés entre-temps sont présents.Je pense que l'absence des messages sur "mails entrants" est dû au fait que le nom du dossier de réception est "Inbox" au lieu de "Boite de réception". Le timer ne surveille pas le bon dossier dans mon cas spécifique ? | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Interface avec Outlook Lun 1 Mar 2021 - 23:51 | |
| Merci beaucoup, Marc ! Comme toujours, ton diagnostic est précis, détaillé et pertinent. Tu as parfaitement raison: le nom du dossier de réception était codé en constante dans la DLL. J'ai modifié la fonction qui installe la surveillance, de - Code:
-
res% = dll_call4("SetOutlookNewMailMemo",POL%,handle(1102),1,2) à - Code:
-
res% = dll_call5("SetOutlookNewMailMemo",POL%,handle(1102),adr(reception$),1,2) La variable reception$ doit contenir le nom exact de la boite de réception: à configurer en ligne 15. Un commentaire montre clairement cette ligne. Tout devrait fonctionner maintenant. Il faudra évidemment recharger KGF.dll.Voici la nouvelle version du programme de démo: - Code:
-
' test_Outlook_2007.bas
label creer, deplacer, agrandir, cacher, montrer, montrer_cles, 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, navigation_dossier_oui, navigation_dossier_non label action_deplacer, action_creer_mail_programme, action_creer_mail_dialog, action_chercher_contact_nom label action_chercher_contact_nom_suivant, navigation_comptes_oui, navigation_comptes_non label information_comptes_1, information_comptes_2, information_comptes_3
dim res%, POL%, s$, s1$, mail%, i%, reception$ dim Dossier%, MailIndex%, PieceIndex%, Sujet$, Expediteur$, Adresse$, Contact%, MailChoisi%, DossierChoisi% dim CompteParDefaut%
reception$ = "Boîte de réception" : ' <================== mettre ici le nom EXACT de votre dossier de réception de nouveaux mails
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,"Cacher l'interface" : on_click 114,cacher sub_menu 115 : parent 115,11 : caption 115,"Montrer l'interface" : on_click 115,montrer sub_menu 116 : parent 116,11 : caption 116,"-" sub_menu 117 : parent 117,11 : caption 117,"Montrer les clés registre pour KGF" : on_click 117,montrer_cles sub_menu 118 : parent 118,11 : caption 118,"-" sub_menu 119 : parent 119,11 : caption 119,"Sortir" : on_click 119,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 215 : parent 215,21 : caption 215,"Afficher le sélecteur des dossiers" : on_click 215,navigation_dossier_oui sub_menu 216 : parent 216,21 : caption 216,"Cacher le sélecteur des dossiers" : on_click 216,navigation_dossier_non sub_menu 217 : parent 217,21 : caption 217,"Afficher le sélecteur des comptes" : on_click 217,navigation_comptes_oui sub_menu 218 : parent 218,21 : caption 218,"Cacher le sélecteur des comptes" : on_click 218,navigation_comptes_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 comptes - noms" : on_click 315,information_Comptes_1 sub_menu 316 : parent 316,31 : caption 316,"Liste des comptes - objets" : on_click 316,information_Comptes_2 sub_menu 317 : parent 317,31 : caption 317,"Liste des comptes - noms et objets" : on_click 317,information_Comptes_3 sub_menu 318 : parent 318,31 : caption 318,"-" sub_menu 319 : parent 319,31 : caption 319,"Liste des mails - noms" : on_click 319,information_mails_1 sub_menu 320 : parent 320,31 : caption 320,"Liste des mails - objets" : on_click 320,information_mails_2 sub_menu 321 : parent 321,31 : caption 321,"Liste des mails - noms et objets" : on_click 321,information_mails_3 sub_menu 322 : parent 322,31 : caption 322,"-" sub_menu 323 : parent 323,31 : caption 323,"Informations mail 1" : on_click 323,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 sub_menu 412 : parent 412,41 : caption 412,"Déplacer un mail" : on_click 412,action_deplacer sub_menu 413 : parent 413,41 : caption 413,"Créer un mail par programme" : on_click 413,action_creer_mail_programme sub_menu 414 : parent 414,41 : caption 414,"Créer un mail avec dialogue" : on_click 414,action_creer_mail_dialog sub_menu 415 : parent 415,41 : caption 415,"Chercher un contact par son nom" : on_click 415,action_chercher_contact_nom sub_menu 416 : parent 416,41 : caption 416,"Chercher un contact suivant par son nom" : on_click 416,action_chercher_contact_nom_suivant width 0,800 memo 1001 : hide 1001 : bar_both 1001 memo 1101 : hide 1101 : bar_both 1101 memo 1102 : hide 1102 : bar_both 1102
container 1002 : top 1002,height_client(0)-80 : left 1002,10 width 1002,width_client(0) : height 1002,height_client(0) - top(1002) caption 1002,"Etat de l'interface Panoramic - Outlook" alpha 1003 : parent 1003,1002 : top 1003,20 : left 1003,10 : parent 1003,1002 : caption 1003,"Etat de l'interface:" edit 1004 : inactive 1004 : top 1004,20 : left 1004,100 : parent 1004,1002 : font_bold 1004 : text 1004,"Non connecté" alpha 1005 : parent 1005,1002 : top 1005,10 : left 1005,240 : parent 1005,1002 : caption 1005,"Dossier choisi:" edit 1006 : inactive 1006 : top 1006,10 : left 1006,320 : width 1006,200 : parent 1006,1002 : font_bold 1006 : text 1006,"<aucun>" alpha 1060 : top 1060,10 : left 1060,530 : parent 1060,1002 : caption 1060,"===>" edit 1061 : inactive 1061 : top 1061,10 : left 1061,560 : width 1061,200 : parent 1061,1002 : font_bold 1061 : text 1061,"<aucun>"
alpha 1007 : parent 1007,1002 : top 1007,30 : left 1007,240 : parent 1007,1002 : caption 1007,"Contact choisi:" edit 1008 : inactive 1008 : top 1008,30 : left 1008,320 : width 1008,200 : parent 1008,1002 : font_bold 1008 : text 1008,"<aucun>" alpha 1009 : parent 1009,1002 : top 1009,50 : left 1009,10 : parent 1009,1002 : caption 1009,"Email choisi:" edit 1010 : inactive 1010 : top 1010,50 : left 1010,100 : width 1010,420 : parent 1010,1002 : font_bold 1010 : text 1010,"<aucun>"
alpha 1011 : top 1011,35 : left 1011,530 : parent 1011,1002: caption 1011,"Compte:" edit 1012 : inactive 1012 : top 1012,50 : left 1012,560 : width 1012,200 : parent 1012,1002 : font_bold 1012 : text 1012,"<aucun>"
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,800 height 0,700 top 1002,height_client(0)-80 : width 1002,width_client(0) - 20 POL% = dll_call4("CreateOutlook",handle(0),10,10,1) text 1004,"Connecté" s$ = string$(200," ") res% = dll_call6("GetOutlookInformation",POL%,7,0,adr(s$),0,0) s$ = trim$(s$) text 1012,s$ s$ = string$(30," ") res% = dll_call6("GetOutlookInformation",POL%,9,0,adr(s$),0,0) caption 0,"Outlook version "+trim$(s$) res% = dll_call5("SetOutlookNewMailMemo",POL%,handle(1102),adr(reception$),1,2) return deplacer: if POL%=0 then return full_space 0 res% = dll_call3("LocateOutlook",POL%,0,0) top 1002,height_client(0)-100 : left 1002,0 : width 1002,width_client(0) return agrandir: if POL%=0 then return res% = dll_call5("ResizeOutlook",POL%,width_client(0),height_client(0)-100,400,200) top 1002,height_client(0)-100 : width 1002,width_client(0) return cacher: if POL%=0 then return res% = dll_call2("OutlookVisibility",POL%,0) return montrer: if POL%=0 then return res% = dll_call2("OutlookVisibility",POL%,1) return montrer_cles: res% = dll_call1("GetAllRegistryKeysForKGF",handle(1102)) message text$(1102) clear 1102 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," ") Dossier% = dll_call6("GetOutlookInformation",POL%,1,0,adr(s$),0,0) : ' dossier% contient l'objet du dossier s$ = trim$(s$) text 1006,s$ message "Dossier choisi: "+s$ return 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," ") MailChoisi% = dll_call6("GetOutlookInformation",POL%,2,USER_EVENT_LPARAM,adr(Sujet$),adr(Expediteur$),adr(Adresse$)) Sujet$ = trim$(Sujet$) Expediteur$ = trim$(Expediteur$) Adresse$ = trim$(Adresse$) text 1010,sujet$ message "Mail choisi: "+Sujet$+chr$(13)+chr$(10)+"De: "+Expediteur$+" Mail: "+Adresse$+chr$(13)+chr$(10)+" Objet mail="+str$(MailChoisi%) return 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$ : ' 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 return 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)) for i%=1 to count(1001) s$ = item_read$(1001,i%) if left$(s$,9)="FullName=" text 1008,mid$(s$,10,len(s$)) exit_for end_if next i% message text$(1001) return end_if
if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00050000") : ' est-ce une sélection de dossier dans le sélecteur des dossiers ? DossierChoisi% = USER_EVENT_LPARAM : ' USER_EVENT_LPARAM contient l'objet Dossier s$ = string$(200," ") res% = dll_call6("GetOutlookInformation",POL%,6,DossierChoisi%,adr(s$),0,0) s$ = trim$(s$) text 1061,s$ message "Dossier choisi: "+s$ return end_if
if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00060000") : ' est-ce une sélection de compte dans le sélecteur des comptes ? CompteParDefaut% = USER_EVENT_LPARAM : ' USER_EVENT_LPARAM contient l'objet Compte clear 1001 res% = dll_call6("GetOutlookInformation",POL%,8,CompteParDefaut%,handle(1001),0,0) s$ = text$(1001) message "Compte choisi: "+chr$(13)+chr$(10)+s$ for i%=1 to count(1001) s$ = item_read$(1001,i%) if left$(s$,10)="UserName=" s$ = mid$(s$,11,len(s$)) exit_for end_if next i% text 1012,s$ return end_if
if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00070000") : ' est-ce qu'on a reçu de nouveaux mails ? ' USER_EVENT_LPARAM contient le nombre de nouveaux mails ' message str$(USER_EVENT_LPARAM)+" nouveaux mails:"+chr$(13)+chr$(10)+text$(1102) if count(1102)>0 ' traiter les nouvaux mails while count(1102)>0 ' ici, traiter le mail dans item_read$(1102,1) mail% = val(item_read$(1102,1)) Sujet$ = string$(200," ") Expediteur$ = string$(200," ") Adresse$ = string$(200," ") res% = dll_call6("GetOutlookInformation",POL%,10,mail%,adr(Sujet$),adr(Expediteur$),adr(Adresse$)) Sujet$ = trim$(Sujet$) Expediteur$ = trim$(Expediteur$) Adresse$ = trim$(Adresse$) message "Mail reçu: "+Sujet$+chr$(13)+chr$(10)+"De: "+Expediteur$+" Mail: "+Adresse$+chr$(13)+chr$(10)+" Objet mail="+str$(MailChoisi%) ' et le supprimer de la liste item_delete 1102,1 end_while end_if return end_if
end_if return navigation_reception: if POL%=0 then return s$ = "Boîte de réception" res% = dll_call3("SelectOutlookFolder",POL%,adr(s$),1) return navigation_contacts_non: if POL%=0 then return res% = dll_call2("ShowOutlookContacts",POL%,0) return navigation_contacts_oui: if POL%=0 then return res% = dll_call2("ShowOutlookContacts",POL%,1) return navigation_dossier_oui: if POL%=0 then return res% = dll_call2("ShowOutlookFolderSelector",POL%,1) return navigation_dossier_non: if POL%=0 then return res% = dll_call2("ShowOutlookFolderSelector",POL%,0) return navigation_comptes_non: if POL%=0 then return res% = dll_call2("ShowOutlookAccounts",POL%,0) return navigation_comptes_Oui: if POL%=0 then return res% = dll_call2("ShowOutlookAccounts",POL%,1) return information_dossiers_1: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookFolderList",POL%,0,handle(1001)) message text$(1001) return
information_dossiers_2: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookFolderList",POL%,1,handle(1001)) message text$(1001) return
information_dossiers_3: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookFolderList",POL%,2,handle(1001)) message text$(1001) return information_comptes_1: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookAccountList",POL%,0,handle(1001)) message text$(1001) return
information_comptes_2: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookAccountList",POL%,1,handle(1001)) message text$(1001) return
information_comptes_3: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookAccountList",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: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookMailList",POL%,1,handle(1001)) message text$(1001) return
information_mails_3: if POL%=0 then return clear 1001 res% = dll_call3("GetOutlookMailList",POL%,2,handle(1001)) message text$(1001) return information_mail1: if POL%=0 then return 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: if POL%=0 then return 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 action_deplacer: if POL%=0 then return if MailChoisi%=0 message "Aucun mail choisi" return end_if if DossierChoisi%=0 message "Aucun dossier choisi" return end_if res% = dll_call3("MoveOutlookMail",POL%,MailChoisi%,DossierChoisi%) MailChoisi% = 0 return action_creer_mail_programme: if POL%=0 then return if contact%=0 message "Il faut choisir un contact d'abord !" return end_if ' préparer les pièces jointes clear 1101 item_add 1101,"KGF.ilb" : ' placer ici le nom d'un fichier des pièce jointe, ou laisser le mémo vide ' ... autant de lignes Attachment que nécessaires, une ligne par pièce jointe clear 1001 item_add 1001,"première ligne du mail" item_add 1001,"... placer ici le reste du mail" : ' autant de lignes que nécessaire... s$ = "Mail test généré par programme" : ' placer ici le sujet du mail ' contact% est l'objet contact sélectionné dans le sélecteur des contacts, retourné par USER_EVENT res% = dll_call6("SendOutlookMail",POL%,contact%,adr(s$),handle(1101),handle(1001),0) : ' le 0 signifie "pas de fenêtre Outlook de saisie mais envoi direct" message str$(res%) return
action_creer_mail_dialog: if POL%=0 then return if contact%=0 message "Il faut choisir un contact d'abord !" return end_if ' préparer les pièces jointes clear 1101 item_add 1101,"KGF.ilb" : ' placer ici le nom d'un fichier des pièce jointe, ou laisser le mémo vide ' ... autant de lignes Attachment que nécessaires, une ligne par pièce jointe clear 1001 item_add 1001,"première ligne du mail" item_add 1001,"... placer ici le reste du mail" : ' autant de lignes que nécessaire... s$ = "Mail test généré par programme" : ' placer ici le sujet du mail ' contact% est l'objet contact sélectionné dans le sélecteur des contacts, retourné par USER_EVENT res% = dll_call6("SendOutlookMail",POL%,contact%,adr(s$),handle(1101),handle(1001),1) : ' le signifie "fenêtre Outlook de saisie" if res%=0 message "Mail envoyé" else message "Erreur - mail non envoyé" end_if return action_chercher_contact_nom: if POL%=0 then return s$ = "Klaus" res% = dll_call2("GetOutlookContactByName",POL%,adr(s$)) return
action_chercher_contact_nom_suivant: if POL%=0 then return s$ = "Klaus" res% = dll_call3("GetNextOutlookContactByName",POL%,contact%,adr(s$)) 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
| |
| |
| |