FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
Interface avec Outlook - Page 3 Emptypar Pedro Aujourd'hui à 8:08

» Un autre pense-bête...
Interface avec Outlook - Page 3 Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Interface avec Outlook - Page 3 Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Interface avec Outlook - Page 3 Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Interface avec Outlook - Page 3 Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Interface avec Outlook - Page 3 Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Interface avec Outlook - Page 3 Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Interface avec Outlook - Page 3 Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Interface avec Outlook - Page 3 Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Interface avec Outlook - Page 3 Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Interface avec Outlook - Page 3 Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Interface avec Outlook - Page 3 Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Interface avec Outlook - Page 3 Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Interface avec Outlook - Page 3 Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Interface avec Outlook - Page 3 Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier

 

 Interface avec Outlook

Aller en bas 
5 participants
Aller à la page : Précédent  1, 2, 3, 4, 5  Suivant
AuteurMessage
Marc

Marc


Nombre de messages : 2466
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

Interface avec Outlook - Page 3 Empty
MessageSujet: Re: Interface avec Outlook   Interface avec Outlook - Page 3 EmptyMar 2 Mar 2021 - 0:47

@Klaus :

Une petite coquille s'est glissée dans le source de démo : un point-virgule a pris la place d'une virgule à la ligne 11.

Interface avec Outlook - Page 3 Klaus510


J'ai bien téléchargé la dernière version de KGF (fichier du 01/03/2021 23h43).

J'ai bien mis le nom exact du dossier en respectant la casse :
Interface avec Outlook - Page 3 Klaus610

Mais malheureusement le timer ne détecte pas les nouveaux entrants.

Peut-être un problème de format de date ? (format Français vs format Anglais) :

Interface avec Outlook - Page 3 Klaus710

Pour ce soir il trop trop tard pour continuer les tests.

Demain soir, j'essaierai de télécharger Outlook version Fr.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Interface avec Outlook - Page 3 Empty
MessageSujet: Re: Interface avec Outlook   Interface avec Outlook - Page 3 EmptyMar 2 Mar 2021 - 1:01

Oui, j'avais déjà détecté cette coquille et elle a été corrigée dans le source posté ci-dessus.

Voici ce que ça donne chez moi:
Code:
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

Lancement du programme de démo:
Interface avec Outlook - Page 3 Aa161

Envoi d'un mail de test vers ma propre adresse mail, attente d'une minute environ:
Interface avec Outlook - Page 3 Aa163

Cosultation de la clé registre par le menu "Fichier":
Interface avec Outlook - Page 3 Aa164
On voit parfaitement le format de la date et de l'heure - ça doit être conforme à cela !

EDIT du 02/03/2021 à 02:01 heures:
J'ai corrigé une petite anomalie dans KGFdll. A recharger...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Marc

Marc


Nombre de messages : 2466
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

Interface avec Outlook - Page 3 Empty
MessageSujet: Re: Interface avec Outlook   Interface avec Outlook - Page 3 EmptyMar 2 Mar 2021 - 7:07

@Klaus

Suite des tests, configuration de ce matin :

- KGF mis à jour (fichier daté du 02/03/2021 à 01:58) ;

- Outlook actif ;

- Interface avec Outlook active avec le dossier de réception correctement orthographié.

J'envoie des messages par mail. Quelques minutes après, Outlook les réceptionne et émet une petite "musique" pour informer l'arrivée de nouveaux messages.

Je patiente 10 minutes. Pas de message de la part de l'interface avec Outlook.

Voici la copie de la consultation de la clé de registre après 10 minutes d'attente et Outlook resté actif :

Interface avec Outlook - Page 3 Klaus810
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Interface avec Outlook - Page 3 Empty
MessageSujet: Re: Interface avec Outlook   Interface avec Outlook - Page 3 EmptyMar 2 Mar 2021 - 8:46

Ah oui, là, il y a un problème avec le registre !
Peux-tu arrêter le rpogramme de démo, puis le relancer et, avant même de créer l'interface, regarder le regsitre par le menu Fichier ? Normalement, lors d l'arrêt du programme, le registre est actualisé...
La valeur importante est DoRecoverMissedMails qui doit être -1 si tout fonctionne bien.
D'ailleurs, tu peux vérifier aussi par RegEdit:
- ruche = HKEY_CURRENT_USER
- clé = SOFTWARE\KGF\OutlookInterface\
- valeurs = DoRecoverMissedMails  et LastCheckTime

Cette structure est mise à jour lors de l'arrêt du programme.

EDIT le 02/03/2021 à 10:32

J'ai fait une modification dans KGF.dll pour signaler clairement si l'accès en lecture ou écriture du registre échoue.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Interface avec Outlook - Page 3 Empty
MessageSujet: Re: Interface avec Outlook   Interface avec Outlook - Page 3 EmptyMar 2 Mar 2021 - 14:08

Bon, j'ai complètement changé mon fusil d'épaule !
On n'utilise plus le registre, et, par là, j'évite les éventuels problèmes de droits d'accès au registre.
Maintenant, le programme crée et maintient un fichier INI dans le dossier où se trouve KGF.dll.
Ce fichier s'appelle KGF_dll.ini. Il contientdra une "section" pour tous les modules qui ont besoin d mémoriser leurs paramètres. Pour le moment, seule l'interface Outlook est concrnée, mais cela va s'étendre:
Code:
[OutlookInterface]
DoRecoverMissedMails=-1
LastCheckTime=2021/03/02 12:37:30

Le programme de démo est inchangé, mais il faut recharger la DLL. Un autre effet de cette modification est que, dès la création de l'interface, les mails arrivées depuis le précédent arrêt du programme sont signalés immédiatement sans plus attendre.

Dite-moi si ça va mieux maintenant, après avoir rechargé KGF.dll.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
jjn4

jjn4


Nombre de messages : 2747
Date d'inscription : 13/09/2009

Interface avec Outlook - Page 3 Empty
MessageSujet: Re: Interface avec Outlook   Interface avec Outlook - Page 3 EmptyMar 2 Mar 2021 - 15:03

Je n'avais pas réessayé depuis un moment,
j'attendais que tu ais fini... ( Laughing )
Dis donc, ça commence à avoir de la gueule !
Ca affiche même les images, c'est génial !
cheers
Il y a des grands blancs entre certains textes ?
Peut-être est-ce la place des pubs qui sont supprimés...?
scratch
A noter encore des erreurs :
Je clique sur un élément de la boîte de réception,
Il apparaît le panneau suivant :
Interface avec Outlook - Page 3 Image-10
Si je clique sur oui, alors là, c'est la cata, plus rien ne marche
j'ai été obligé d'arrêter de force et de supprimer Chess_48.ilb et KGF_dll.ini
pour que ça remarche.
Et si je clique sur non, là ça marche avec des textes et des images
très espacées,par contre, quand après, je clique sur un autre élément
de la boîte de réception et ça ne marche plus, ça fait tout le temps :
Interface avec Outlook - Page 3 Image-11
J'espère que toutes ces remarques vont t'aider à faire un super programme !
cheers
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Interface avec Outlook - Page 3 Empty
MessageSujet: Re: Interface avec Outlook   Interface avec Outlook - Page 3 EmptyMar 2 Mar 2021 - 15:35

@jjn4:
Merci d'avoir testé.
Le problème avec les clics dans le corps des Emails est que je les affiche en format HTML dans un WebBrowser. Mais c'est le corps du mail, pa sune page internet complète. Et, dans certains cas, il manque les fichiers annexes qui sont normalement chargés automatiquement par l'explorer. De plus, certaines images sont "bloquées" (affichées sous forme d'une petite croix sur und blanc ou rouge). Là, c'est de mécanisme de sécurité d'Iinternet Explorer (qui est la base de WebBrowser) qui bloque et il n'y a pas moyen de contourner cela.

D'ailleurs, ça doit être similaire pour un composant HVIEWER en Panoramic - certains liens ne fonctionnent pas normalement.

Bien sûr, je pourrais bloquer le clic dans la partie affichage du mail ce qui résoudrait le problème.
Si tu as une meilleure solution, je suis preneur...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Marc

Marc


Nombre de messages : 2466
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

Interface avec Outlook - Page 3 Empty
MessageSujet: Re: Interface avec Outlook   Interface avec Outlook - Page 3 EmptyMar 2 Mar 2021 - 18:37

Bonsoir à tous !

@Klaus
"...le programme crée et maintient un fichier INI dans le dossier où se trouve KGF.dll"  ===> Ok !

"...les mails arrivées depuis le précédent arrêt du programme sont signalés immédiatement sans plus attendre." ===> Ok !


Les mails entrants arrivés entre-temps et signalés par Outlook, ne sont pas détectés par l'interface.

Après 10 minutes d'attente, voici le contenu du fichier kgf_dll.ini :

Interface avec Outlook - Page 3 Klaus910


Précisions / rappel :
Pour effectuer les tests, je suis sous Windows 10 version Fr et Outlook version En.

Revenir en haut Aller en bas
lepetitmarocain




Nombre de messages : 341
Age : 82
Localisation : Région Parisienne (à mon grand désespoir)
Date d'inscription : 04/07/2018

Interface avec Outlook - Page 3 Empty
MessageSujet: Re: Interface avec Outlook   Interface avec Outlook - Page 3 EmptyMar 2 Mar 2021 - 19:17

Bonsoir Klaus.

Je voudrais tester la dernière mouture du programme, mais je ne sais pas quoi mettre dans la zone

Mettre le nom exact de votre dossier de réception

Merci de ne me dire à quoi cela correspond.

Bonne soirée
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Interface avec Outlook - Page 3 Empty
MessageSujet: Re: Interface avec Outlook   Interface avec Outlook - Page 3 EmptyMar 2 Mar 2021 - 21:32

Le nom extact de la boite de réception ? Ben, c'est le nom du dossier dans lequel tes mails arrivent. Chez moi, c'est:
"Boîte de réception"
en tenant compte des majuscules et des accents !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Interface avec Outlook - Page 3 Empty
MessageSujet: Re: Interface avec Outlook   Interface avec Outlook - Page 3 EmptyMer 3 Mar 2021 - 1:01

Sécurisation de 'interface Outlook lors d'un clic sur un lien:

J'ai totalement bloqué le clic sur un lien quelconque. Les images sont bien affichées pourvu qu'elles soient accessibles. On peut cliquer partout, surligner du texte, copier/coller du texte ailleurs, mais aucun lien externe ne réagira.

Ceci résout le problème de plantage lors du clic sur certains liens.

Il suffit de recharger KGF.dll.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Interface avec Outlook - Page 3 Empty
MessageSujet: Re: Interface avec Outlook   Interface avec Outlook - Page 3 EmptyMer 3 Mar 2021 - 1:23

@Marc:
Je pense que le fichier KGF_dll.ini que tu montres, reflète la situation après le démarrage du programme de démo pour la toute première fois après le téléchargement de la version KGF.dll qui bascule d'une clé registre vers un fichier INI.

As-tu essayé de sortir du programme "normalement", puis regarder le fichier à nouveau ? A la sortie du programme, le fichier est mis à jour, avec une date et heure valide. A partir de ce moment, ça devrait rester cohérent.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Interface avec Outlook - Page 3 Empty
MessageSujet: Re: Interface avec Outlook   Interface avec Outlook - Page 3 EmptyMer 3 Mar 2021 - 9:11

J'ai "amélioré" la gestion d'un clic sur un lien.

Le lien est maintenant bien ouvert, mais pas dans le WebBrowser. Il est ouvert dans le browser par défaut du système, ou dans EDGE, selon la situation. Il ne devrait plus y avoir de problèmes.

Il faut recharger KGF.dll. Le programme de démo a légèrement changé:
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("GetAllKeysForKGF",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
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Marc

Marc


Nombre de messages : 2466
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

Interface avec Outlook - Page 3 Empty
MessageSujet: Re: Interface avec Outlook   Interface avec Outlook - Page 3 EmptyMer 3 Mar 2021 - 10:06

Bonjour Klaus !

Citation :
As-tu essayé de sortir du programme "normalement"

Ah mince ! je me suis fait piéger ! Je suis sorti par la croix donc sans passer par le s/p "sortir".

Donc en sortant correctement, le couple date/heure du fichier KGF_DLL.ini est correct.

Je vais ajouter dans le source la ligne "on_close 0,sortir" avant de refaire une bêtise.


Résultats des nouveaux tests :

"...les mails arrivées depuis le précédent arrêt du programme sont signalés immédiatement sans plus attendre." ===> Ils sont bien présents dans le dossier de réception mais ne sont pas signalés comme nouveaux : Absence de messages d'information.

Les mails entrants arrivés entre-temps et signalés par Outlook, ne sont pas détectés par l'interface. Dans le source, le dossier de réception est correctement nommé en respectant la casse : "Inbox"


...


Après 10 minutes d'attente, voici le contenu du fichier kgf_dll.ini avant de sortir de l'interface :

Interface avec Outlook - Page 3 Klaus116


et après avoir quitté l'interface à 9h53 :

Interface avec Outlook - Page 3 Klaus117

Interface avec Outlook - Page 3 Klaus118



En espérant que tout ceci puisse t'aider et que ce ne soit pas une erreur de mes manipulations.

Bonne continuation !



EDIT : je viens de rectifier l'heure ci-dessus "...après avoir quitté l'interface à 9h53" au lieu de 10h53 !
Revenir en haut Aller en bas
Marc

Marc


Nombre de messages : 2466
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

Interface avec Outlook - Page 3 Empty
MessageSujet: Re: Interface avec Outlook   Interface avec Outlook - Page 3 EmptyMer 3 Mar 2021 - 10:15



Gloups !


Pardon Klaus, je me suis trompé lors de mes essais, ne pas tenir compte des parties biffées de mon message ci-dessus.


Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Interface avec Outlook - Page 3 Empty
MessageSujet: Re: Interface avec Outlook   Interface avec Outlook - Page 3 EmptyMer 3 Mar 2021 - 10:47

Tu as raison - ça manquait dans le programme de démo.

Voilà qui est corrigé:
Code:
' test_Outlook_2007.bas

label creer, deplacer, agrandir, cacher, montrer, montrer_cles, sortir, UserEvent, close0
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

close0:
  POL% = dll_call1("DeleteOutlook",POL%)
  return

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("GetAllKeysForKGF",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
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Marc

Marc


Nombre de messages : 2466
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

Interface avec Outlook - Page 3 Empty
MessageSujet: Re: Interface avec Outlook   Interface avec Outlook - Page 3 EmptyMer 3 Mar 2021 - 11:09

Je reprends la suite de mes essais :


"...les mails arrivées depuis le précédent arrêt du programme sont signalés immédiatement sans plus attendre." ===> Ok !


Les mails entrants arrivés entre-temps et signalés par Outlook, ne sont pas détectés par l'interface. Le code-source est bien configuré avec le dossier de réception "Inbox"

Interface avec Outlook - Page 3 Klaus119

Je me suis envoyé un mail reçu à 10h29 dans Outlook. Il est 10h49 et n'est pas signalé ni présent dans l'interface pour Outlook.

Voici le contenu de KGF_DLL.ini avant fermeture de l'interface :

Interface avec Outlook - Page 3 Klaus120

Après la sortie correcte de l'interface à 10h55 :

Interface avec Outlook - Page 3 Klaus121


10h57 : je relance l'interface. Le message de 10h29 m'est bien signalé comme nouveau mail entrant.

11h03 : je quitte l'interface. Contenu du fichier .ini :

Interface avec Outlook - Page 3 Klaus122



En conclusion, sauf erreur de ma part, les mails entrants arrivés entre-temps ne sont pas détectés dans ma configuration.

Bonne continuation !
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Interface avec Outlook - Page 3 Empty
MessageSujet: Re: Interface avec Outlook   Interface avec Outlook - Page 3 EmptyMer 3 Mar 2021 - 11:29

Citation :
Après la sortie correcte de l'interface à 10h55 :

Tu as une heure de 10:20:02.


10h57 : je relance l'interface. Le message de 10h29 m'est bien signalé comme nouveau mail entrant.

Il semble donc normal qu'un mail enregistré à 10:29 ne soit pas encore pris en compte à ce moment...

Je continue les tests chez moi. Cependant, lorsque je m'envoie un mail, puis je fais envoyer/recevoir dans Outlook, j'ai le signalement du mail reçu une ou deux minutes lus tard, le temps de réaction du timer...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Marc

Marc


Nombre de messages : 2466
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

Interface avec Outlook - Page 3 Empty
MessageSujet: Re: Interface avec Outlook   Interface avec Outlook - Page 3 EmptyMer 3 Mar 2021 - 11:51

Citation :
Il semble donc normal qu'un mail enregistré à 10:29 ne soit pas encore pris en compte à ce moment...

Oui, mais cela prouve qu'entre temps le timer n'a pas fait son travail chez moi.

Marc a écrit:
Je me suis envoyé un mail reçu à 10h29 dans Outlook. Il est 10h49 et n'est pas signalé ni présent dans l'interface pour Outlook.


Situation de départ et chronologie :

- Outlook actif
- Interface pour Outlook active

Je m'envoie un message à 10h29. Il est reçu par Outlook une grosse poignée de secondes plus tard.

==> A 10h49, il n'était toujours signalé par l'interface.    <=== Problème "timer" ?

Je pense que le timer aurait dû m'informer dans les quelques minutes après 10h29 qu'un nouveau message était arrivé dans Outlook.

Je quitte l'interface à 10h55 sans avoir été notifié du mail de 10h29.

Je relance l'interface à 10h57. Là, j'ai bien une notification pour mon message de 10h29 : ce qui est normal puisque le "timer" ne l'avait pas signalé.

11h03, je quitte l'interface.


Voilà pour la séquence précédente. Je refais un essai maintenant...


Dernière édition par Marc le Mer 3 Mar 2021 - 12:14, édité 1 fois
Revenir en haut Aller en bas
Marc

Marc


Nombre de messages : 2466
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

Interface avec Outlook - Page 3 Empty
MessageSujet: Re: Interface avec Outlook   Interface avec Outlook - Page 3 EmptyMer 3 Mar 2021 - 12:13

Nouvel essai

Outlook et l'interface pour Outlook actifs.

Chronologie :

- 11h55 je m'envoie un nouveau message
- 11h55 Outlook le reçoit et émet une petite musique.
- 12h00 toujours pas de nouvelle de l'interface, je patiente encore quelques minutes...
- 12h05 toujours pas de nouvelle de l'interface, je quitte l'interface.

Le message de 11h55 ne m'a pas été signalé.

- 12h06 je relance l'interface, aussitôt j'ai une boite de dialogue qui m'informe du mail de 11h55

Interface avec Outlook - Page 3 Klaus123

Fin de l'essai.


Je constate que le "timer" n'a pas effectué sa tâche.

scratch
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Interface avec Outlook - Page 3 Empty
MessageSujet: Re: Interface avec Outlook   Interface avec Outlook - Page 3 EmptyMer 3 Mar 2021 - 12:31

Tu as encore raison !

Lors d'une des multiples modifications, j'avais désactivé le timer...

C'est réparé. J'en ai profité pour apporter 3 améliorations:

1. Ce fichier KGF_dll.ini est maintenant ouvert en permanence dans KGF.dll et accessible à d'autres programmes.
Il contient actuellement 1 section avec deux valeurs: c'est la section OutlookInterface.
Des programmes Panoramic peuvent ajouter d'autres sections, ajouter des valeurs etc.
En avanr-première, voici les fonctions qui gèrent cela:
Code:
res% = dll_call1("GetAllKeysForKGF",handle(memo%)) 
    retourne TOUTES les sections et valeurs
res% = dll_call2("GetKeySectionForKGF",adr(section$),handle(dest%))  dest%=memo ou list 
    retourne toutes les valeurs pour la section spécifiée
res% = dll_call1("GetListOfKeySectionsForKGF",handle(dest%))  dest%=memo ou list
    retourne la liste des sections définies dans le fichier ini
res% = dll_call2("WriteKeySectionForKGF",adr(section$),handle(memo%))
    écrit les valeurs d'une section. Le mémo contient des lignes de type
        NomValeur=valeur
res% = dll_call3("WriteKeyValueForKGF",adr(section$),adr(cle$),adr(valeur$))
    crée ou actualise la valeur pour une clé spécifique d'une section spécifique
valeur$ = string$(100," ")
res% = dll_call3("ReadKeyValueForKGF",adr(section$),adr(cle$),adr(valeur$))
valeur$ = trim$(valeur$
    retourne la valeur d'une clé specifique d'une section spécifique

2. L'heure de dernière vérification est mise à jour immédiatement après avoir signalé tous les mails arrivés entre l'arrêt précédent un un nouveau lancement, de sorte à ne pas les signaler deux fois.

3. L'heure de dernière vérification est maintenant immédiatement mise à jour après chaque cycle du timer.

Je pense que là, on a progressé.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
lepetitmarocain




Nombre de messages : 341
Age : 82
Localisation : Région Parisienne (à mon grand désespoir)
Date d'inscription : 04/07/2018

Interface avec Outlook - Page 3 Empty
MessageSujet: Re: Interface avec Outlook   Interface avec Outlook - Page 3 EmptyMer 3 Mar 2021 - 13:07

Bonjour Klaus.

Merci pour ta réponse concernant le nom de la Boite de Réception.

Je ne pensais pas du tout à cela lorsque je t'ai demandé le renseignement.

Je pensais que cela était le nom d'une directory ou fichier.

Maintenant que tu viens de faire des modifs il n'y a pas très longtemps, pourrais tu mettre le programme entier pour tester.

Il n'y  pas grand monde pour tester.

C'est dommage qu' OSCARIBOUT ne vienne plus sur ce forum. Il aurait testé!!!!

Bon après midi
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Interface avec Outlook - Page 3 Empty
MessageSujet: Re: Interface avec Outlook   Interface avec Outlook - Page 3 EmptyMer 3 Mar 2021 - 13:25

Voilà le programme de démo;
Code:
' test_Outlook_2007.bas

label creer, deplacer, agrandir, cacher, montrer, montrer_cles, sortir, UserEvent, close0
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

close0:
  POL% = dll_call1("DeleteOutlook",POL%)
  return

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("GetAllKeysForKGF",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
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Interface avec Outlook - Page 3 Empty
MessageSujet: re   Interface avec Outlook - Page 3 EmptyMer 3 Mar 2021 - 13:50

Salut Klaus.

Je te suggère de mettre une sorte de "disclaimer" le temps de vérifier la présence d' Outlook et un message avant une fermeture automatique si Outlook n'est pas sur la machine.

Comme je ne l'ai pas (Outlook Embarassed ),le programme plante dès que je lance le menu "Créer l'interface".
Crying or Very sad
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Interface avec Outlook - Page 3 Empty
MessageSujet: Re: Interface avec Outlook   Interface avec Outlook - Page 3 EmptyMer 3 Mar 2021 - 14:06

Bonne idée, Yannick !

Voilà qui est fait. Recharge KGF.dll et utilise la version actualisée du programme de démo:
Code:
' test_Outlook_2007.bas

label creer, deplacer, agrandir, cacher, montrer, montrer_cles, sortir, UserEvent, close0
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

close0:
  POL% = dll_call1("DeleteOutlook",POL%)
  return

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)
  if POL%=0
    message "Erreur en création de l'interface Outlook"
    return
  end_if
  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("GetAllKeysForKGF",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

Yannick aime ce message

Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé





Interface avec Outlook - Page 3 Empty
MessageSujet: Re: Interface avec Outlook   Interface avec Outlook - Page 3 Empty

Revenir en haut Aller en bas
 
Interface avec Outlook
Revenir en haut 
Page 3 sur 5Aller à la page : Précédent  1, 2, 3, 4, 5  Suivant
 Sujets similaires
-
» extension de l'interface avec les DLL
» extension de l'interface avec les DLL - bis
» Domotique avec Panoramic : Interface RS232 TTL
» Outlook
» Panoramic et Outlook

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos projets-
Sauter vers: