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
» PANORAMIC V 1
Interface avec Outlook Emptypar jjn4 Hier à 17:49

» select intégrés [résolu]
Interface avec Outlook Emptypar jjn4 Hier à 17:00

» number_mouse_up
Interface avec Outlook Emptypar jjn4 Hier à 11:59

» Aide de PANORAMIC
Interface avec Outlook Emptypar jjn4 Hier à 11:16

» trop de fichiers en cours
Interface avec Outlook Emptypar lepetitmarocain Hier à 10:43

» Je teste PANORAMIC V 1 beta 1
Interface avec Outlook Emptypar papydall Hier à 4:17

» bouton dans autre form que 0
Interface avec Outlook Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
Interface avec Outlook Emptypar Klaus Lun 6 Mai 2024 - 11:41

» Gestion d'un système client-serveur.
Interface avec Outlook Emptypar Klaus Lun 6 Mai 2024 - 10:23

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Interface avec Outlook Emptypar Froggy One Jeu 2 Mai 2024 - 11:16

» @Jack
Interface avec Outlook Emptypar Jack Mar 30 Avr 2024 - 20:40

» Une calculatrice en une ligne de programme
Interface avec Outlook Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
Interface avec Outlook Emptypar leclode Sam 27 Avr 2024 - 17:59

» Bataille navale SM
Interface avec Outlook Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Les maths du crocodile
Interface avec Outlook Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
-40%
Le deal à ne pas rater :
Tefal Ingenio Emotion – Batterie de cuisine 10 pièces (induction, ...
59.99 € 99.99 €
Voir le deal

 

 Interface avec Outlook

Aller en bas 
5 participants
Aller à la page : 1, 2, 3, 4, 5  Suivant
AuteurMessage
Klaus

Klaus


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

Interface avec Outlook Empty
MessageSujet: Interface avec Outlook   Interface avec Outlook EmptySam 13 Fév 2021 - 10:16

Je tente de créer une interface Panoramic <--> Outlook.

Pour ma part, j'ai Outlook 2007 et je tente d'y accéder depuis Panoramic. J'ai obtenu de premiers résultats encourageants, et j'aimerais savoir ce que cela donne "sur le terrain".

Pour les (mal)heureux utilisateurs de Outlook:
Seriez-vous intéressés par faire de rapides essais de compatibilité pour moi ? Je n'ai que la version 2007, et je n'ai aucune idée ce que mon code peut donner avec d'autres versions de Outlook...

Pour tester, il suffit de télécharger la version KGF.dll accessible sur mon site (via la signature de ce message), et de lancer le programme suivant (après avoir éventuellement adapté le chemin vers KGF.dll):
Code:
' test_Outlook_2007.bas

label creer, deplacer, agrandir, sortir

dim res%, POL%

main_menu 1
  sub_menu 11 : parent 11,1 : caption 11,"Fichier"
    sub_menu 111 : parent 111,11 : caption 111,"Creer l'interface"        : on_click 111,creer
    sub_menu 112 : parent 112,11 : caption 112,"Déplacer l'interface"    : on_click 112,deplacer
    sub_menu 113 : parent 113,11 : caption 113,"Agrandir l'interface"    : on_click 113,agrandir
    sub_menu 114 : parent 114,11 : caption 114,"-"
    sub_menu 115 : parent 115,11 : caption 115,"Sortir"                  : on_click 115,sortir
   

dll_on "KGF.dll"

end

sortir:
  POL% = dll_call1("DeleteOutlook",POL%)
  terminate
  return

creer:
  if POL%<>0 then return
  width 0,750
  height 0,600
  POL% = dll_call3("CreateOutlook",handle(0),10,10)
  return
 
deplacer:
  if POL%=0 then return
  full_space 0
  res% = dll_call3("LocateOutlook",POL%,0,0)
  return
 
agrandir:
  if POL%=0 then return
  res% = dll_call5("ResizeOutlook",POL%,width_client(0),height_client(0),400,200)
  return

Mode d'emploi:
- dans le menu "Fichiers", choisir "Créer"
==> vous obtiendrez un visuel similaire à une fenêtre Outlook simplifiée, dont la colonne de gauche se remplit immédiatement par l'arborescence des dossiers existants dans votre Outlook.

Optionnellement:
- dans le menu "Fichiers", choisir "Deplacer"
==> la form 0 se met en full_space et le visuel se place en (0,0)
- dans le menu "Fichiers", choisir "Agrandir"
==> le visuel prend toute la fenêtre

Actions dans le visuel:
- un clic sur un des dossiers dans l'arborescence des dossiers
==> affiche la liste de mails contenus dans ce dossier, dans une liste en haut à droire de l'aorborescence des dossiers. Ces mails sont affichés par leur titre, leur "sujet".
- un clic sur un des sujets de mail dans la liste en haut à droite
==> affiche l'expéditeur et son adresse mais dans une petite bande juste en-dessous de la liste de mails
==> affiche la liste des pièces jointes dans une combo juste en-dessous de l'affichage de l'expéditeur
==> affiche le corps du mail en version HTML en bas à droite dans un visualisateur (un WebBrowser)

C'est en tout cas ce qui devrait se passer et ce qui se passe chez moi, avec Outlook 2007.
Qu'en est-il chez vous ? Avec quelle version de Outlook ? Quelles sont les versions compatibles ou incompatibles ? Avez-vous une anomalie, un plantage ? Un rapide diagnostic serait utile, éventuellement avec une capture d'écran.

Merci d'avance pour votre collaboration !

Actuellement, cette version NE MODIFIE RIEN ! Aucun danger !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
jjn4

jjn4


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

Interface avec Outlook Empty
MessageSujet: Re: Interface avec Outlook   Interface avec Outlook EmptySam 13 Fév 2021 - 14:45

Ah, ça y est, ça marche,
(dans un premier temps, c'était parce que je n'avais pas le dernière version KGF.dll)
Sleep
Alors, quand je crée l'interface, il y a plein d'éléments qui apparaissent dans « Dossiers »,
il n'y a que « Éléments supprimés » et « Courrier indésirable » qui contiennent quelque chose.
Et quand on clique sur les éléments de droite, le contenu apparaît en bas.
Notons que quand je clique sur le « - » de « Dossiers » pour en faire un « + »,
ça fait « Violation d'accès à l'adresse 04F51DAD dans le module KGF.dll, lecture de l'adresse 00000008 ».
jocolor
Ca a l'air d'un projet intéressant qui éviterait la lourdeur d'Outlook !
cheers
A quoi sert de déplacer l'interface ?
scratch
Bravo pour cette recherche !
cheers
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
Klaus

Klaus


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

Interface avec Outlook Empty
MessageSujet: Re: Interface avec Outlook   Interface avec Outlook EmptySam 13 Fév 2021 - 15:21

Merci d'avoir testé, jjn4 !

Citation :
Notons que quand je clique sur le « - » de « Dossiers » pour en faire un « + »,
ça fait « Violation d'accès à l'adresse 04F51DAD dans le module KGF.dll, lecture de l'adresse 00000008 ».
Oups... je vais tester cela.

Citation :
A quoi sert de déplacer l'interface ?
Ben... juste à changer la position de l'interface. Utile avant ou après un changement de dimensions. C'est juste pour pouvoir adapter la disposition d'une fenêtre dans le cas de changement de dimensions d'une fenêtre, en tirant un des bords, par exemple.

Au fait, tu as quelle version de Outlook ? Je suppose que les dossiers autres que les deux que tu as cités, contiennent des éléments ? Et en cliquant dessus, rien ne s'affiche dans la liste en haut à droite ?
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Marc

Marc


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

Interface avec Outlook Empty
MessageSujet: Re: Interface avec Outlook   Interface avec Outlook EmptySam 13 Fév 2021 - 16:49

Bonjour à tous !

@Klaus
Je ne suis pas un utilisateur d'Outlook.
Je viens d'installer la version 2010 en 32 bits et j'ai créé une adresse mail provisoire pour effectuer des tests. (panoramic.outlook@free.fr)

Après le choix du profil, j'ai ceci qui s'affiche :
Interface avec Outlook Klaus_15

Citation :
- dans le menu "Fichiers", choisir "Deplacer"
==> la form 0 se met en full_space et le visuel se place en (0,0)
C'est correct.


Citation :
- dans le menu "Fichiers", choisir "Agrandir"
==> le visuel prend toute la fenêtre
c'est correct.




Citation :
- un clic sur un des dossiers dans l'arborescence des dossiers
==> affiche la liste de mails contenus dans ce dossier, dans une liste en haut à droire de l'aorborescence des dossiers. Ces mails sont affichés par leur titre, leur "sujet".
C'est correct.


Citation :
- un clic sur un des sujets de mail dans la liste en haut à droite
==> affiche l'expéditeur et son adresse mais dans une petite bande juste en-dessous de la liste de mails
c'est correct.


Citation :
- un clic sur un des sujets de mail dans la liste en haut à droite
==> affiche l'expéditeur et son adresse mais dans une petite bande juste en-dessous de la liste de mails
C'est correct.


Citation :
==> affiche la liste des pièces jointes dans une combo juste en-dessous de l'affichage de l'expéditeur
Certaines pièces jointes ne s'affichent pas. Peut-être celles qui comportent le caractère "espace" dans leur nom ?
Je vais faire d'autres essais.

EDIT : C'est correct ! J'ai remarqué qu'Outlook supprimait les pièces jointes qu'il juge douteuses.


Citation :
==> affiche le corps du mail en version HTML en bas à droite dans un visualisateur (un WebBrowser)
C'est correct.


Souhaites-tu des tests avec une version d'Outlook plus récente ?  2019 ?


Exemple d'affichage chez moi. J'ai laissé la fenêtre en mode réduit.
Interface avec Outlook Klaus111
Revenir en haut Aller en bas
Klaus

Klaus


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

Interface avec Outlook Empty
MessageSujet: Re: Interface avec Outlook   Interface avec Outlook EmptySam 13 Fév 2021 - 17:43

Merci, Marc !

C'est déjà une bonne nouvelle que tout fonctionne avec Outlook 2010, sauf éventuellement la reconnaisance des pièces jointes, mais ça reste à vérifier. En tout cas, ce n'est pas lié à la présence d'espaces dans le nom de la pièce jointe.

D'autres versions de OutLook ? Oui, toute information est bonne à prendre :
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Marc

Marc


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

Interface avec Outlook Empty
MessageSujet: Re: Interface avec Outlook   Interface avec Outlook EmptySam 13 Fév 2021 - 17:48

Pardon Klaus, j'avais édité mon précédent message au sujet des pièces jointes. Tout est OK !
J'ai remarqué que c'est Outlook qui supprime les pièces jointes pouvant contenir des virus.

Revenir en haut Aller en bas
Klaus

Klaus


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

Interface avec Outlook Empty
MessageSujet: Re: Interface avec Outlook   Interface avec Outlook EmptySam 13 Fév 2021 - 17:57

Super ! Donc, tout est validé pour OL 2010.

Je suis en train de coder des USER_EVENT pour signaler au programme Panoramic la sélection d'un dossier, la sélection d'un mail ou le choix d'une pièce jointe.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Marc

Marc


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

Interface avec Outlook Empty
MessageSujet: Re: Interface avec Outlook   Interface avec Outlook EmptySam 13 Fév 2021 - 19:10

@Klaus
J'ai donc téléchargé la version d'Outlook 32bits 2019.
J'ai accès à toutes les fonctions jusqu'au 18 février 2021.

Interface avec Outlook Klaus214



Et... bonne nouvelle !  Tout ce que tu as fait fonctionne bien !  Comme avec la version 2010 !
Revenir en haut Aller en bas
lepetitmarocain




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

Interface avec Outlook Empty
MessageSujet: Re: Interface avec Outlook   Interface avec Outlook EmptySam 13 Fév 2021 - 19:16

Bonjour Klaus, bonjour à tous.

Je viens de tester avec Outlook 2016, et tout fonctionne normalement

Bonne soirée à tous
Revenir en haut Aller en bas
jjn4

jjn4


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

Interface avec Outlook Empty
MessageSujet: Re: Interface avec Outlook   Interface avec Outlook EmptySam 13 Fév 2021 - 19:35

C'est Outlook 2007, que j'ai.
Non je n'ai rien d'autres dans les autres éléments du dossier...?
scratch
Ah si, j'ai aussi Boîte de réception qui marche maintenant.
Mais pas les autres, il faut dire que je n'utilise jamais Outlook.
Je verrai demain plus en détail...
Sleep
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
Klaus

Klaus


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

Interface avec Outlook Empty
MessageSujet: Re: Interface avec Outlook   Interface avec Outlook EmptySam 13 Fév 2021 - 20:07

Super ! Donc, on a maintenant:
2007, 2010, 2016, 2019.
C'est très encourangeant. Je continue de mon côté à pousser les fonctionnalités.

Et voici une version qui apporte deux choses:
- des USER_EVENT pour avertir le programme Panoramic
- une fonction d'information pour récupérer les noms de dossiers, messages, expéditeurs, pièces jointes etc:
Code:
' test_Outlook_2007.bas

label creer, deplacer, agrandir, sortir, UserEvent

dim res%, POL%, s$
dim Dossier%, MailIndex%, PieceIndex%, Sujet$, Expediteur$, Adresse$

main_menu 1
  sub_menu 11 : parent 11,1 : caption 11,"Fichier"
    sub_menu 111 : parent 111,11 : caption 111,"Creer l'interface"        : on_click 111,creer
    sub_menu 112 : parent 112,11 : caption 112,"Déplacer l'interface"    : on_click 112,deplacer
    sub_menu 113 : parent 113,11 : caption 113,"Agrandir l'interface"    : on_click 113,agrandir
    sub_menu 114 : parent 114,11 : caption 114,"-"
    sub_menu 115 : parent 115,11 : caption 115,"Sortir"                  : on_click 115,sortir
  sub_menu 21 : parent 21,1 : caption 21,"Informations"
 
   

dll_on "KGF.dll"

on_user_event UserEvent

end

sortir:
  POL% = dll_call1("DeleteOutlook",POL%)
  terminate
  return

creer:
  if POL%<>0 then return
  width 0,750
  height 0,600
  POL% = dll_call4("CreateOutlook",handle(0),10,10,1)
  return
 
deplacer:
  if POL%=0 then return
  full_space 0
  res% = dll_call3("LocateOutlook",POL%,0,0)
  return
 
agrandir:
  if POL%=0 then return
  res% = dll_call5("ResizeOutlook",POL%,width_client(0),height_client(0),400,200)
  return
 
UserEvent:
'  message "UserEvent: WPARAM="+right$("0000000"+hex$(USER_EVENT_WPARAM),8)+"  LPARAM="+right$("0000000"+hex$(USER_EVENT_LPARAM),8)
  if bin_and(USER_EVENT_WPARAM,hex("FF000000"))=hex("13000000")                : ' est-ce un USER_EVENT de Outlook ?

    if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00010000")              : ' est-ce une sélection de dossier ?
      Dossier% = USER_EVENT_LPARAM
      s$ = string$(200," ")
      res% = dll_call6("GetOutlookInformation",POL%,1,0,adr(s$),0,0)
      s$ = trim$(s$)
      message "Dossier choisi: "+s$
    end_if
   
    if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00020000")              : ' est-ce une sélection de mail ?
      MailIndex% = USER_EVENT_LPARAM
      Sujet$ = string$(200," ")
      Expediteur$ = string$(200," ")
      Adresse$ = string$(200," ")
      res% = dll_call6("GetOutlookInformation",POL%,2,USER_EVENT_LPARAM,adr(Sujet$),adr(Expediteur$),adr(Adresse$))
      Sujet$ = trim$(Sujet$)
      Expediteur$ = trim$(Expediteur$)
      Adresse$ = trim$(Adresse$)
      message "Mail choisi: "+Sujet$+chr$(13)+chr$(10)+"De: "+Expediteur$+"      Mail: "+Adresse$
    end_if
   
    if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00030000")              : ' est-ce une sélection de pièce jointe ?
      PieceIndex% = USER_EVENT_LPARAM
      s$ = string$(200," ")
      res% = dll_call6("GetOutlookInformation",POL%,3,PieceIndex%,adr(s$),0,0)
      s$ = trim$(s$)
      message "Pièce jointe: "+s$
    end_if
 
 
  end_if
  return

Il faut bien sûr recharger KGF.dll.

Ca commence à prendre forme et ça me motive, maintenant que je sais que la compatibilité avec plusieurs versions de Outlook est bien au rendez-vous.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Marc

Marc


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

Interface avec Outlook Empty
MessageSujet: Re: Interface avec Outlook   Interface avec Outlook EmptySam 13 Fév 2021 - 21:02

Tout est ok !

Que ce soit la sélection d'un dossier, d'un mail ou d'une pièce jointe, le retour se fait correctement dans Panoramic.

Les informations "Sujet", "Expéditeur" et "Adresse" sont correctes.

Bonne continuation !

Revenir en haut Aller en bas
Klaus

Klaus


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

Interface avec Outlook Empty
MessageSujet: Re: Interface avec Outlook   Interface avec Outlook EmptyLun 15 Fév 2021 - 16:41

Voici une nouvelle version, avec KGF.dll à télécharger sur mon site (dans ma siganture).

Elle apporte:
- correction d'un bug dans le positionnement de l'interface
- dans l'aroborescence des dossiers, le dossier sélectionné reste marqué sur fond bleu
- un menu "Navigation" apparaît avec une ligne navigant vers le dossier "Boîte de réception"
(le nom est paramétrable dans une chaîne de caractères)
- remplacement de la simple liste des objets par un tableau avec les colonnes suivantes:
date, heure, expéditeur, objet
- un clic dans une ligne, quelque soit la colonne, sélectionne ce mail
- ne plus afficher dans la liste des dossiers des lignes non adaptées comme "Contacts" etc

Voici le programme de démo assorti:
Code:
' test_Outlook_2007.bas

label creer, deplacer, agrandir, sortir, UserEvent
label navigation_reception

dim res%, POL%, s$
dim Dossier%, MailIndex%, PieceIndex%, Sujet$, Expediteur$, Adresse$

main_menu 1
  sub_menu 11 : parent 11,1 : caption 11,"Fichier"
    sub_menu 111 : parent 111,11 : caption 111,"Creer l'interface"        : on_click 111,creer
    sub_menu 112 : parent 112,11 : caption 112,"Déplacer l'interface"     : on_click 112,deplacer
    sub_menu 113 : parent 113,11 : caption 113,"Agrandir l'interface"     : on_click 113,agrandir
    sub_menu 114 : parent 114,11 : caption 114,"-"
    sub_menu 115 : parent 115,11 : caption 115,"Sortir"                   : on_click 115,sortir
  sub_menu 21 : parent 21,1 : caption 21,"Navigation"  
    sub_menu 211 : parent 211,21 : caption 211,"Boite de réception"       : on_click 211,navigation_reception
  
    

dll_on "KGF.dll"

on_user_event UserEvent

end

sortir:
  POL% = dll_call1("DeleteOutlook",POL%)
  terminate
  return

creer:
  if POL%<>0 then return
  width 0,750
  height 0,600
  POL% = dll_call4("CreateOutlook",handle(0),10,10,1)
  return
  
deplacer:
  if POL%=0 then return
  full_space 0
  res% = dll_call3("LocateOutlook",POL%,0,0)
  return
  
agrandir:
  if POL%=0 then return
  res% = dll_call5("ResizeOutlook",POL%,width_client(0),height_client(0),400,200)
  return
  
UserEvent:
'  message "UserEvent: WPARAM="+right$("0000000"+hex$(USER_EVENT_WPARAM),8)+"  LPARAM="+right$("0000000"+hex$(USER_EVENT_LPARAM),8)
  if bin_and(USER_EVENT_WPARAM,hex("FF000000"))=hex("13000000")                 : ' est-ce un USER_EVENT de Outlook ?

    if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00010000")               : ' est-ce une sélection de dossier ?
      Dossier% = USER_EVENT_LPARAM
      s$ = string$(200," ")
      res% = dll_call6("GetOutlookInformation",POL%,1,0,adr(s$),0,0)
      s$ = trim$(s$)
      message "Dossier choisi: "+s$
    end_if
    
    if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00020000")               : ' est-ce une sélection de mail ?
      MailIndex% = USER_EVENT_LPARAM
      Sujet$ = string$(200," ")
      Expediteur$ = string$(200," ")
      Adresse$ = string$(200," ")
      res% = dll_call6("GetOutlookInformation",POL%,2,USER_EVENT_LPARAM,adr(Sujet$),adr(Expediteur$),adr(Adresse$))
      Sujet$ = trim$(Sujet$)
      Expediteur$ = trim$(Expediteur$)
      Adresse$ = trim$(Adresse$)
      message "Mail choisi: "+Sujet$+chr$(13)+chr$(10)+"De: "+Expediteur$+"       Mail: "+Adresse$
    end_if
    
    if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00030000")               : ' est-ce une sélection de pièce jointe ?
      PieceIndex% = USER_EVENT_LPARAM
      s$ = string$(200," ")
      res% = dll_call6("GetOutlookInformation",POL%,3,PieceIndex%,adr(s$),0,0)
      s$ = trim$(s$)
      message "Pièce jointe: "+s$
    end_if
  end_if
  return
  
navigation_reception:
  s$ = "Boîte de réception"
  res% = dll_call2("SelectOutl  ookFolder",POL%,adr(s$))
  return

Prochaine étape: tri du tableau des mails par un clic sur l'entête d'une colonne...

EDIT 16/02/2021 à 0h42:

Finalement, le tri des colonnes était très simple. KGF.dll inclut maintenant cette fonctionalité.

Je suis en train de coder l'extraction des pièces jointes...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

Interface avec Outlook Empty
MessageSujet: Re: Interface avec Outlook   Interface avec Outlook EmptyJeu 18 Fév 2021 - 0:29

Et voilà - on peut extraire les pièces jointes. Dans le programme de démo adapté à ces fins, l suffit de sélectionner une des pièces jointes (s'il y en a...) dans la combo juste au-dessus du corps du mail. Un dialogue s'ouvre alors pour confirmer l'extraction de la pièce jointe. Si c'est accepté, la pièce sera extraite avec le même nom dans le dissoer du programme EXE en cours. Ce dossier est codé dans le programme de démo et peut être modifié à volonté.

On peut maintenant trier le tableau des mails en cliquant sur le titre des colonnes du tableau des mails, et tout le tableau sera trié selon cette colonne. En tri ascendant d'abord, et un autre clic effectue un tri descendant. Ceci quelque soit la colonne.

EDIT 18/02/2021 à 11h30:

Le programme de démo a maintenant un 3ème menu: "Informations". Les 3 lignes de ce menu permettent de récupérer la liste des dossiers sous différents formats, point de départ pour de futures interventions sur Outlook. On peut en particulier retourner les "objets" désignant chaque dossier (sous forme d'une liste chargée dans un objet MEMO ou LIST). Chaque objet est en fait une valeur numérique unique, et il suffira ensuite de passer cette valeur sous forme de valeur integer (via la fonction val(item_read$(memo%,indice_choisi%) ) pour accéder à toutes les informations du dossier choisi (ses mails, ses sous-dossiers etc).

Il faut bien sûr recharger KGF.dll. Voici le programme de démo:
Code:
' test_Outlook_2007.bas

label creer, deplacer, agrandir, sortir, UserEvent
label navigation_reception, information_dossiers_1, information_dossiers_2, information_dossiers_3

dim res%, POL%, s$
dim Dossier%, MailIndex%, PieceIndex%, Sujet$, Expediteur$, Adresse$

main_menu 1
  sub_menu 11 : parent 11,1 : caption 11,"Fichier"
    sub_menu 111 : parent 111,11 : caption 111,"Creer l'interface"        : on_click 111,creer
    sub_menu 112 : parent 112,11 : caption 112,"Déplacer l'interface"     : on_click 112,deplacer
    sub_menu 113 : parent 113,11 : caption 113,"Agrandir l'interface"     : on_click 113,agrandir
    sub_menu 114 : parent 114,11 : caption 114,"-"
    sub_menu 115 : parent 115,11 : caption 115,"Sortir"                   : on_click 115,sortir
  sub_menu 21 : parent 21,1 : caption 21,"Navigation"  
    sub_menu 211 : parent 211,21 : caption 211,"Boite de réception"       : on_click 211,navigation_reception
  sub_menu 31 : parent 31,1 : caption 31,"Informations"  
    sub_menu 311 : parent 311,31 : caption 311,"Liste des dossiers - noms"                 : on_click 311,information_dossiers_1
    sub_menu 312 : parent 312,31 : caption 312,"Liste des dossiers - objets"               : on_click 312,information_dossiers_2
    sub_menu 313 : parent 313,31 : caption 313,"Liste des dossiers - noms et objets"       : on_click 313,information_dossiers_3
  
    
memo 1001 : hide 1001 : bar_both 1001    

dll_on "KGF.dll"

on_user_event UserEvent

end

sortir:
  POL% = dll_call1("DeleteOutlook",POL%)
  terminate
  return

creer:
  if POL%<>0 then return
  width 0,750
  height 0,600
  POL% = dll_call4("CreateOutlook",handle(0),10,10,1)
  return
  
deplacer:
  if POL%=0 then return
  full_space 0
  res% = dll_call3("LocateOutlook",POL%,0,0)
  return
  
agrandir:
  if POL%=0 then return
  res% = dll_call5("ResizeOutlook",POL%,width_client(0),height_client(0),400,200)
  return
  
UserEvent:
'  message "UserEvent: WPARAM="+right$("0000000"+hex$(USER_EVENT_WPARAM),8)+"  LPARAM="+right$("0000000"+hex$(USER_EVENT_LPARAM),8)
  if bin_and(USER_EVENT_WPARAM,hex("FF000000"))=hex("13000000")                 : ' est-ce un USER_EVENT de Outlook ?

    if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00010000")               : ' est-ce une sélection de dossier ?
      Dossier% = USER_EVENT_LPARAM
      s$ = string$(200," ")
      res% = dll_call6("GetOutlookInformation",POL%,1,0,adr(s$),0,0)
      s$ = trim$(s$)
      message "Dossier choisi: "+s$
    end_if
    
    if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00020000")               : ' est-ce une sélection de mail ?
      MailIndex% = USER_EVENT_LPARAM
      Sujet$ = string$(200," ")
      Expediteur$ = string$(200," ")
      Adresse$ = string$(200," ")
      res% = dll_call6("GetOutlookInformation",POL%,2,USER_EVENT_LPARAM,adr(Sujet$),adr(Expediteur$),adr(Adresse$))
      Sujet$ = trim$(Sujet$)
      Expediteur$ = trim$(Expediteur$)
      Adresse$ = trim$(Adresse$)
      message "Mail choisi: "+Sujet$+chr$(13)+chr$(10)+"De: "+Expediteur$+"       Mail: "+Adresse$
    end_if
    
    if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00030000")               : ' est-ce une sélection de pièce jointe ?
      PieceIndex% = USER_EVENT_LPARAM
      s$ = string$(200," ")
      res% = dll_call6("GetOutlookInformation",POL%,3,PieceIndex%,adr(s$),0,0)
      s$ = trim$(s$)
      if message_confirmation_yes_no("Enregistrer la pièce jointe: "+s$)=1
        s$ = file_extract_path$(param_value$(0))+s$                             : ' extraure la pièce jointe dans le dossier du programme
        res% = dll_call4("ExtractOutlookAttachment",POL%,0,PieceIndex%,adr(s$))
        if res%=0
          message "Pièce jointe extraite dans:"+chr$(13)+chr$(10)+s$
        else
          message "Erreur en extraction de pièce jointe"
        end_if
      end_if
    end_if
  end_if
  return
  
navigation_reception:
  s$ = "Boîte de réception"
  res% = dll_call2("SelectOutlookFolder",POL%,adr(s$))
  return
  
information_dossiers_1:
  clear 1001
  res% = dll_call3("GetOutlookFolderList",POL%,0,handle(1001))
  message text$(1001)
  return

information_dossiers_2:
  clear 1001
  res% = dll_call3("GetOutlookFolderList",POL%,1,handle(1001))
  message text$(1001)
  return

information_dossiers_3:
  clear 1001
  res% = dll_call3("GetOutlookFolderList",POL%,2,handle(1001))
  message text$(1001)
  return
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Marc

Marc


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

Interface avec Outlook Empty
MessageSujet: Re: Interface avec Outlook   Interface avec Outlook EmptyJeu 18 Fév 2021 - 11:55

"… le dossier sélectionné reste marqué sur fond bleu…" : Testé, Ok !
"… "Navigation" apparaît avec une ligne navigant vers le dossier "Boîte de réception"…" : Testé, Ok !
"… remplacement de la simple liste des objets par un tableau avec les colonnes suivantes: date, heure, expéditeur, objet…" : Testé, Ok !
"… un clic dans une ligne, quelque soit la colonne, sélectionne ce mail…" : Testé, Ok !
"… on peut extraire les pièces jointes…" : Testé, Ok !
"… en tri ascendant d'abord, et un autre clic effectue un tri descendant…" : Testé, Ok !
"… le programme de démo a maintenant un 3ème menu: "Informations"…" : Testé, Ok !

Aucun dysfonctionnement trouvé, tout est bon sur ma config : Outlook2019 + W10.

Bonne continuation !
Revenir en haut Aller en bas
Klaus

Klaus


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

Interface avec Outlook Empty
MessageSujet: Re: Interface avec Outlook   Interface avec Outlook EmptyJeu 18 Fév 2021 - 12:34

Merci, Marc ! C'est rassurant de voir la compatibilité ascendante, ce qui ne va pas forcément de soi.

Donc, je continue...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

Interface avec Outlook Empty
MessageSujet: Re: Interface avec Outlook   Interface avec Outlook EmptyJeu 18 Fév 2021 - 13:15

Etape suivante:
le menu "Informations" contient 3 nouvelles options pour récupérer la liste des mails du dossier sélectionné (mails affichés dans le tableau en haut à droite), selon plusieurs formats.

Voici le programme de démo qui va avec:
Code:
' test_Outlook_2007.bas

label creer, deplacer, agrandir, sortir, UserEvent
label navigation_reception, information_dossiers_1, information_dossiers_2, information_dossiers_3
label information_mails_1, information_mails_2, information_mails_3

dim res%, POL%, s$
dim Dossier%, MailIndex%, PieceIndex%, Sujet$, Expediteur$, Adresse$

main_menu 1
  sub_menu 11 : parent 11,1 : caption 11,"Fichier"
    sub_menu 111 : parent 111,11 : caption 111,"Creer l'interface"        : on_click 111,creer
    sub_menu 112 : parent 112,11 : caption 112,"Déplacer l'interface"    : on_click 112,deplacer
    sub_menu 113 : parent 113,11 : caption 113,"Agrandir l'interface"    : on_click 113,agrandir
    sub_menu 114 : parent 114,11 : caption 114,"-"
    sub_menu 115 : parent 115,11 : caption 115,"Sortir"                  : on_click 115,sortir
  sub_menu 21 : parent 21,1 : caption 21,"Navigation" 
    sub_menu 211 : parent 211,21 : caption 211,"Boite de réception"      : on_click 211,navigation_reception
  sub_menu 31 : parent 31,1 : caption 31,"Informations" 
    sub_menu 311 : parent 311,31 : caption 311,"Liste des dossiers - noms"                : on_click 311,information_dossiers_1
    sub_menu 312 : parent 312,31 : caption 312,"Liste des dossiers - objets"              : on_click 312,information_dossiers_2
    sub_menu 313 : parent 313,31 : caption 313,"Liste des dossiers - noms et objets"      : on_click 313,information_dossiers_3
    sub_menu 314 : parent 314,31 : caption 314,"-"               
    sub_menu 315 : parent 315,31 : caption 315,"Liste des mails - noms"                    : on_click 315,information_mails_1
    sub_menu 316 : parent 316,31 : caption 316,"Liste des mails - objets"                  : on_click 316,information_mails_2
    sub_menu 317 : parent 317,31 : caption 317,"Liste des mails - noms et objets"          : on_click 317,information_mails_3
 
   
memo 1001 : hide 1001 : bar_both 1001   

dll_on "KGF.dll"

on_user_event UserEvent

end

sortir:
  POL% = dll_call1("DeleteOutlook",POL%)
  terminate
  return

creer:
  if POL%<>0 then return
  width 0,750
  height 0,600
  POL% = dll_call4("CreateOutlook",handle(0),10,10,1)
  return
 
deplacer:
  if POL%=0 then return
  full_space 0
  res% = dll_call3("LocateOutlook",POL%,0,0)
  return
 
agrandir:
  if POL%=0 then return
  res% = dll_call5("ResizeOutlook",POL%,width_client(0),height_client(0),400,200)
  return
 
UserEvent:
'  message "UserEvent: WPARAM="+right$("0000000"+hex$(USER_EVENT_WPARAM),8)+"  LPARAM="+right$("0000000"+hex$(USER_EVENT_LPARAM),8)
  if bin_and(USER_EVENT_WPARAM,hex("FF000000"))=hex("13000000")                : ' est-ce un USER_EVENT de Outlook ?

    if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00010000")              : ' est-ce une sélection de dossier ?
      Dossier% = USER_EVENT_LPARAM
      s$ = string$(200," ")
      res% = dll_call6("GetOutlookInformation",POL%,1,0,adr(s$),0,0)
      s$ = trim$(s$)
      message "Dossier choisi: "+s$
    end_if
   
    if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00020000")              : ' est-ce une sélection de mail ?
      MailIndex% = USER_EVENT_LPARAM
      Sujet$ = string$(200," ")
      Expediteur$ = string$(200," ")
      Adresse$ = string$(200," ")
      res% = dll_call6("GetOutlookInformation",POL%,2,USER_EVENT_LPARAM,adr(Sujet$),adr(Expediteur$),adr(Adresse$))
      Sujet$ = trim$(Sujet$)
      Expediteur$ = trim$(Expediteur$)
      Adresse$ = trim$(Adresse$)
      message "Mail choisi: "+Sujet$+chr$(13)+chr$(10)+"De: "+Expediteur$+"      Mail: "+Adresse$
    end_if
   
    if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00030000")              : ' est-ce une sélection de pièce jointe ?
      PieceIndex% = USER_EVENT_LPARAM
      s$ = string$(200," ")
      res% = dll_call6("GetOutlookInformation",POL%,3,PieceIndex%,adr(s$),0,0)
      s$ = trim$(s$)
      if message_confirmation_yes_no("Enregistrer la pièce jointe: "+s$)=1
        s$ = file_extract_path$(param_value$(0))+s$                            : ' extraure la pièce jointe dans le dossier du programme
        res% = dll_call4("ExtractOutlookAttachment",POL%,0,PieceIndex%,adr(s$))
        if res%=0
          message "Pièce jointe extraite dans:"+chr$(13)+chr$(10)+s$
        else
          message "Erreur en extraction de pièce jointe"
        end_if
      end_if
    end_if
  end_if
  return
 
navigation_reception:
  s$ = "Boîte de réception"
  res% = dll_call2("SelectOutlookFolder",POL%,adr(s$))
  return
 
information_dossiers_1:
  clear 1001
  res% = dll_call3("GetOutlookFolderList",POL%,0,handle(1001))
  message text$(1001)
  return

information_dossiers_2:
  clear 1001
  res% = dll_call3("GetOutlookFolderList",POL%,1,handle(1001))
  message text$(1001)
  return

information_dossiers_3:
  clear 1001
  res% = dll_call3("GetOutlookFolderList",POL%,2,handle(1001))
  message text$(1001)
  return
 
information_mails_1:
  clear 1001
  res% = dll_call3("GetOutlookMailList",POL%,0,handle(1001))
  message text$(1001)
  return

information_mails_2:
  clear 1001
  res% = dll_call3("GetOutlookMailList",POL%,1,handle(1001))
  message text$(1001)
  return

information_mails_3:
  clear 1001
  res% = dll_call3("GetOutlookMailList",POL%,2,handle(1001))
  message text$(1001)
  return
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
lepetitmarocain




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

Interface avec Outlook Empty
MessageSujet: Re: Interface avec Outlook   Interface avec Outlook EmptyJeu 18 Fév 2021 - 13:46

Bonjour.

Je viens de tester la dernière mouture du programme.

je ne vois pas comment sélectionner la pièce jointe pour la sauvegarder.

Quelques suggestions pour la sauvegarde des pièces jointes.

Peux tu faire en sorte que les pièces jointes soient sauvegardées automatiquement suivant une règle précise.

Par exemple:

J' ai 2 fils qui envoient des photos régulièrement.

En faisant une règle simple (Outlook a des règles, mais incompréhensibles), serait il possible que les photos soient sauvegardées

dans des dossiers  choisis par moi.

Donc sauvegarde avec règles ou manuellement.

Merci

Bonne journée
Revenir en haut Aller en bas
Klaus

Klaus


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

Interface avec Outlook Empty
MessageSujet: Re: Interface avec Outlook   Interface avec Outlook EmptyJeu 18 Fév 2021 - 14:09

Citation :
je ne vois pas comment sélectionner la pièce jointe pour la sauvegarder.
Eh bien, tu cliques sur la petite flèche à droite de la combo contenant les pièces jointes, puis tu cliques sur une des pièces jointes. Un dialogue s'ouvre alors pour savoir sio tu veux saivegarder, et si oui, ma sauvegarde est faite.

Voilà ce qui se passe su tu cliques sur une des pièces jointes:
Code:
      PieceIndex% = USER_EVENT_LPARAM
      s$ = string$(200," ")
      res% = dll_call6("GetOutlookInformation",POL%,3,PieceIndex%,adr(s$),0,0)
      s$ = trim$(s$)
      if message_confirmation_yes_no("Enregistrer la pièce jointe: "+s$)=1
        s$ = file_extract_path$(param_value$(0))+s$                             : ' extraire la pièce jointe dans le dossier du programme
        res% = dll_call4("ExtractOutlookAttachment",POL%,0,PieceIndex%,adr(s$))
        if res%=0
          message "Pièce jointe extraite dans:"+chr$(13)+chr$(10)+s$
        else
          message "Erreur en extraction de pièce jointe"
        end_if
      end_if

La variable USER_EVENT_LPARAM contient l'indice de la pièce jointe dans la liste des pièces jointes (1, 2, ...). C'est donc cette valeur qui est passée à la fonction ExtractOutlookAttachment pour sélectionner la pièce. Mais tu peux très bien faire une boucle pour mes extraire toutes...

Tu vois que mon programme de démo utilise le dossier d'origine du programme pour enregister les pièces jointes. Mais tu peux très bien utiliser un SAVE_DIALOG, ou tout autre moyen, pour choisir le dossier de ton choix. L'important, c'est de passer ce dossier à la fonction par adr(nom_de_variable$).

Citation :
Peux tu faire en sorte que les pièces jointes soient sauvegardées automatiquement suivant une règle précise
Le code présenté est juste un programme de démo, pas une application complète. Ce cpdemontre simplement les fonctionnalités des fonctions que je suis en train de créer. Il revient à toi de créer ta propre application, utilisant ces fonctions, pour développer des possibilités qui te sont personnelles.

Mais à ta place, j'attendrais que la version officielle soit publiée, car, tant que je suis en version de démo en quête de retour des Panoramiciens pour évaluer la portabilité de ces fonctions pour les différentes versions de Outlook, le format d'appel de ces fonctions peut changer, leur fonctionnement interne peut être redéfini - bref, c'est une version pré-alpha. Pas une version de production.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
jjn4

jjn4


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

Interface avec Outlook Empty
MessageSujet: Re: Interface avec Outlook   Interface avec Outlook EmptyJeu 18 Fév 2021 - 14:39

Eh, eh, ça fait un moment que je n'avais pas regardé...
J'ai essayé les nouveautés. Je vois que ça se développe.
C'est intéressant de voir si on peut arriver à un Outlook
maison en panoramic plus léger et plus facilement maîtrisable...
Continue, c'est superbe !
cheers
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
Klaus

Klaus


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

Interface avec Outlook Empty
MessageSujet: Re: Interface avec Outlook   Interface avec Outlook EmptyJeu 18 Fév 2021 - 14:47

Merci, jjn4 !

Pour le moment, j'approfondis un peu ce que l'on peut en extraire comme informations.
Après, je vais tenter le premières actions:
déplacer un mail dans un autre dossier, supprimer un mail, vider un dossier entier, répondre à un mail, transférer un mail à un autre destinataire.
Puis, je vais récupérer le contenu des contacts, avec un critère de recherche souple.

Tu vois, j'ai du pain sur la planche !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

Interface avec Outlook Empty
MessageSujet: Re: Interface avec Outlook   Interface avec Outlook EmptyJeu 18 Fév 2021 - 16:52

Nouvelle étape:
Le menu "Informations" contient une nouvelle ligne qui retourne et affiche les informations sur le premier mail montgré dans la grille des mails en haut à droite. L'indice 1 ext choisi arbitrairement pour être sûr d'avoir quelque chose à afficher. Mais ça marche évidemment pour tout mail présent dans cette grille. Cela permet de récupérer par programme ces informations pour un mail donné et de les traiter en Panoramic. Exemple: historique par expéditeur, ...

Voici le programme de démo, adapté à cette nouveauté:
Code:
' test_Outlook_2007.bas

label creer, deplacer, agrandir, sortir, UserEvent
label navigation_reception, information_dossiers_1, information_dossiers_2, information_dossiers_3
label information_mails_1, information_mails_2, information_mails_3, information_mail1

dim res%, POL%, s$, mail%
dim Dossier%, MailIndex%, PieceIndex%, Sujet$, Expediteur$, Adresse$

main_menu 1
  sub_menu 11 : parent 11,1 : caption 11,"Fichier"
    sub_menu 111 : parent 111,11 : caption 111,"Creer l'interface"        : on_click 111,creer
    sub_menu 112 : parent 112,11 : caption 112,"Déplacer l'interface"    : on_click 112,deplacer
    sub_menu 113 : parent 113,11 : caption 113,"Agrandir l'interface"    : on_click 113,agrandir
    sub_menu 114 : parent 114,11 : caption 114,"-"
    sub_menu 115 : parent 115,11 : caption 115,"Sortir"                  : on_click 115,sortir
  sub_menu 21 : parent 21,1 : caption 21,"Navigation" 
    sub_menu 211 : parent 211,21 : caption 211,"Boite de réception"      : on_click 211,navigation_reception
  sub_menu 31 : parent 31,1 : caption 31,"Informations" 
    sub_menu 311 : parent 311,31 : caption 311,"Liste des dossiers - noms"                : on_click 311,information_dossiers_1
    sub_menu 312 : parent 312,31 : caption 312,"Liste des dossiers - objets"              : on_click 312,information_dossiers_2
    sub_menu 313 : parent 313,31 : caption 313,"Liste des dossiers - noms et objets"      : on_click 313,information_dossiers_3
    sub_menu 314 : parent 314,31 : caption 314,"-"               
    sub_menu 315 : parent 315,31 : caption 315,"Liste des mails - noms"                    : on_click 315,information_mails_1
    sub_menu 316 : parent 316,31 : caption 316,"Liste des mails - objets"                  : on_click 316,information_mails_2
    sub_menu 317 : parent 317,31 : caption 317,"Liste des mails - noms et objets"          : on_click 317,information_mails_3
    sub_menu 318 : parent 318,31 : caption 318,"-"               
    sub_menu 319 : parent 319,31 : caption 319,"Informations mail 1"                      : on_click 319,information_mail1
 
   
memo 1001 : hide 1001 : bar_both 1001   

dll_on "KGF.dll"

on_user_event UserEvent

end

sortir:
  POL% = dll_call1("DeleteOutlook",POL%)
  terminate
  return

creer:
  if POL%<>0 then return
  width 0,750
  height 0,600
  POL% = dll_call4("CreateOutlook",handle(0),10,10,1)
  return
 
deplacer:
  if POL%=0 then return
  full_space 0
  res% = dll_call3("LocateOutlook",POL%,0,0)
  return
 
agrandir:
  if POL%=0 then return
  res% = dll_call5("ResizeOutlook",POL%,width_client(0),height_client(0),400,200)
  return
 
UserEvent:
'  message "UserEvent: WPARAM="+right$("0000000"+hex$(USER_EVENT_WPARAM),8)+"  LPARAM="+right$("0000000"+hex$(USER_EVENT_LPARAM),8)
  if bin_and(USER_EVENT_WPARAM,hex("FF000000"))=hex("13000000")                : ' est-ce un USER_EVENT de Outlook ?

    if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00010000")              : ' est-ce une sélection de dossier ?
      Dossier% = USER_EVENT_LPARAM
      s$ = string$(200," ")
      res% = dll_call6("GetOutlookInformation",POL%,1,0,adr(s$),0,0)
      s$ = trim$(s$)
      message "Dossier choisi: "+s$
    end_if
   
    if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00020000")              : ' est-ce une sélection de mail ?
      MailIndex% = USER_EVENT_LPARAM
      Sujet$ = string$(200," ")
      Expediteur$ = string$(200," ")
      Adresse$ = string$(200," ")
      res% = dll_call6("GetOutlookInformation",POL%,2,USER_EVENT_LPARAM,adr(Sujet$),adr(Expediteur$),adr(Adresse$))
      Sujet$ = trim$(Sujet$)
      Expediteur$ = trim$(Expediteur$)
      Adresse$ = trim$(Adresse$)
      message "Mail choisi: "+Sujet$+chr$(13)+chr$(10)+"De: "+Expediteur$+"      Mail: "+Adresse$
    end_if
   
    if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00030000")              : ' est-ce une sélection de pièce jointe ?
      PieceIndex% = USER_EVENT_LPARAM
      s$ = string$(200," ")
      res% = dll_call6("GetOutlookInformation",POL%,3,PieceIndex%,adr(s$),0,0)
      s$ = trim$(s$)
      if message_confirmation_yes_no("Enregistrer la pièce jointe: "+s$)=1
        s$ = file_extract_path$(param_value$(0))+s$                            : ' extraure la pièce jointe dans le dossier du programme
        res% = dll_call4("ExtractOutlookAttachment",POL%,0,PieceIndex%,adr(s$))
        if res%=0
          message "Pièce jointe extraite dans:"+chr$(13)+chr$(10)+s$
        else
          message "Erreur en extraction de pièce jointe"
        end_if
      end_if
    end_if
  end_if
  return
 
navigation_reception:
  s$ = "Boîte de réception"
  res% = dll_call2("SelectOutlookFolder",POL%,adr(s$))
  return
 
information_dossiers_1:
  clear 1001
  res% = dll_call3("GetOutlookFolderList",POL%,0,handle(1001))
  message text$(1001)
  return

information_dossiers_2:
  clear 1001
  res% = dll_call3("GetOutlookFolderList",POL%,1,handle(1001))
  message text$(1001)
  return

information_dossiers_3:
  clear 1001
  res% = dll_call3("GetOutlookFolderList",POL%,2,handle(1001))
  message text$(1001)
  return
 
information_mails_1:
  clear 1001
  res% = dll_call3("GetOutlookMailList",POL%,0,handle(1001))
  message text$(1001)
  return

information_mails_2:
  clear 1001
  res% = dll_call3("GetOutlookMailList",POL%,1,handle(1001))
  message text$(1001)
  return

information_mails_3:
  clear 1001
  res% = dll_call3("GetOutlookMailList",POL%,2,handle(1001))
  message text$(1001)
  return
 
information_mail1:
  clear 1001
  ' Pour la démo, on choisit le premier mail de la liste.
  ' Mais on pourrait prendre n'importe quel mail entre 1 et count(1001).
  res% = dll_call3("GetOutlookMailList",POL%,1,handle(1001))
  mail% = val(item_read$(1001,1))
  clear 1001
  res% = dll_call3("GetOutlookMailInformation",POL%,mail%,handle(1001))
  message text$(1001)
  return

En voici un exemple:
Interface avec Outlook Aa159

Ces informations sont retournées dans un MEMO et donc utilisables, ligne par ligne.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
lepetitmarocain




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

Interface avec Outlook Empty
MessageSujet: Re: Interface avec Outlook   Interface avec Outlook EmptyJeu 18 Fév 2021 - 20:14

Bonsoir Klaus.

Loin de moi l'idée de te donner des ordres pour faire ce dont j'aurai besoin.

C'etait seulement une idée pour ton programme, qui je vois bien n'est pas encore fini, puisque tu avances tous les jours.

Bonne soirée
Revenir en haut Aller en bas
Klaus

Klaus


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

Interface avec Outlook Empty
MessageSujet: Re: Interface avec Outlook   Interface avec Outlook EmptyVen 19 Fév 2021 - 1:01

Nouvelle étape:
J'ai implémenté la première action modifiant le contenu de Outlook !
Il s'agit d'une fonction qui vide complètement un dossier Outlook.
Le programme de démo montre un nouveau lenu "Actions".
Pour le moment, il contient une seule ligne: "Vider Courrier indésirable"
Ca fait exactement ça: vider ce dossier.

J'ai choisi ce dossier pour les besoins de la démo car il existe partout et ne contient probablement pas de choses utiles.
Cependant, avant d'utiliser cette option, je vous commande de vérifier !
De toutes façons, le programme de démo demande une confirmation avant exécution.
Après... c'est votre resposabilité.

L'implémentation est faite par une fonction à laquelle on peut passer n'importe quel dossier.
Mais, pour des raisons de sécurité, on ne passe pas le nom du dossier en chaîne de caractères.
Il faut le passer en tant que "objet", tel que retourné par la fonction
Code:
  res% = dll_call3("GetOutlookFolderList",POL%,2,handle(1001))
Elle retourne la liste de tous les dossiers dans un mémo, un dossier par ligne.
Chaque ligne contient une valeur numérique au début, puis une virgule, puis le nom du dossier.
La valeur numérique au début est "l'objet" qu'il faut passer à la fonction
Code:
  res% = dll_call2("EmptyOutlookFolder",POL%,dossier%)

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

label creer, deplacer, agrandir, sortir, UserEvent
label navigation_reception, information_dossiers_1, information_dossiers_2, information_dossiers_3
label information_mails_1, information_mails_2, information_mails_3, information_mail1, action_vider1

dim res%, POL%, s$, s1$, mail%, i%
dim Dossier%, MailIndex%, PieceIndex%, Sujet$, Expediteur$, Adresse$

main_menu 1
  sub_menu 11 : parent 11,1 : caption 11,"Fichier"
    sub_menu 111 : parent 111,11 : caption 111,"Creer l'interface"        : on_click 111,creer
    sub_menu 112 : parent 112,11 : caption 112,"Déplacer l'interface"     : on_click 112,deplacer
    sub_menu 113 : parent 113,11 : caption 113,"Agrandir l'interface"     : on_click 113,agrandir
    sub_menu 114 : parent 114,11 : caption 114,"-"
    sub_menu 115 : parent 115,11 : caption 115,"Sortir"                   : on_click 115,sortir
  sub_menu 21 : parent 21,1 : caption 21,"Navigation"  
    sub_menu 211 : parent 211,21 : caption 211,"Boite de réception"       : on_click 211,navigation_reception
  sub_menu 31 : parent 31,1 : caption 31,"Informations"  
    sub_menu 311 : parent 311,31 : caption 311,"Liste des dossiers - noms"                 : on_click 311,information_dossiers_1
    sub_menu 312 : parent 312,31 : caption 312,"Liste des dossiers - objets"               : on_click 312,information_dossiers_2
    sub_menu 313 : parent 313,31 : caption 313,"Liste des dossiers - noms et objets"       : on_click 313,information_dossiers_3
    sub_menu 314 : parent 314,31 : caption 314,"-"                
    sub_menu 315 : parent 315,31 : caption 315,"Liste des mails - noms"                    : on_click 315,information_mails_1
    sub_menu 316 : parent 316,31 : caption 316,"Liste des mails - objets"                  : on_click 316,information_mails_2
    sub_menu 317 : parent 317,31 : caption 317,"Liste des mails - noms et objets"          : on_click 317,information_mails_3
    sub_menu 318 : parent 318,31 : caption 318,"-"                
    sub_menu 319 : parent 319,31 : caption 319,"Informations mail 1"                       : on_click 319,information_mail1
  sub_menu 41 : parent 41,1 : caption 41,"Actions"  
    sub_menu 411 : parent 411,41 : caption 411,"Vider Courrier indésirable"                : on_click 411,action_vider1
  
    
memo 1001 : hide 1001 : bar_both 1001    

dll_on "KGF.dll"

on_user_event UserEvent

end

sortir:
  POL% = dll_call1("DeleteOutlook",POL%)
  terminate
  return

creer:
  if POL%<>0 then return
  width 0,750
  height 0,600
  POL% = dll_call4("CreateOutlook",handle(0),10,10,1)
  return
  
deplacer:
  if POL%=0 then return
  full_space 0
  res% = dll_call3("LocateOutlook",POL%,0,0)
  return
  
agrandir:
  if POL%=0 then return
  res% = dll_call5("ResizeOutlook",POL%,width_client(0),height_client(0),400,200)
  return
  
UserEvent:
'  message "UserEvent: WPARAM="+right$("0000000"+hex$(USER_EVENT_WPARAM),8)+"  LPARAM="+right$("0000000"+hex$(USER_EVENT_LPARAM),8)
  if bin_and(USER_EVENT_WPARAM,hex("FF000000"))=hex("13000000")                 : ' est-ce un USER_EVENT de Outlook ?

    if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00010000")               : ' est-ce une sélection de dossier ?
      Dossier% = USER_EVENT_LPARAM
      s$ = string$(200," ")
      res% = dll_call6("GetOutlookInformation",POL%,1,0,adr(s$),0,0)
      s$ = trim$(s$)
      message "Dossier choisi: "+s$
    end_if
    
    if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00020000")               : ' est-ce une sélection de mail ?
      MailIndex% = USER_EVENT_LPARAM
      Sujet$ = string$(200," ")
      Expediteur$ = string$(200," ")
      Adresse$ = string$(200," ")
      res% = dll_call6("GetOutlookInformation",POL%,2,USER_EVENT_LPARAM,adr(Sujet$),adr(Expediteur$),adr(Adresse$))
      Sujet$ = trim$(Sujet$)
      Expediteur$ = trim$(Expediteur$)
      Adresse$ = trim$(Adresse$)
      message "Mail choisi: "+Sujet$+chr$(13)+chr$(10)+"De: "+Expediteur$+"       Mail: "+Adresse$
    end_if
    
    if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00030000")               : ' est-ce une sélection de pièce jointe ?
      PieceIndex% = USER_EVENT_LPARAM
      s$ = string$(200," ")
      res% = dll_call6("GetOutlookInformation",POL%,3,PieceIndex%,adr(s$),0,0)
      s$ = trim$(s$)
      if message_confirmation_yes_no("Enregistrer la pièce jointe: "+s$)=1
        s$ = file_extract_path$(param_value$(0))+s$                             : ' extraure la pièce jointe dans le dossier du programme
        res% = dll_call4("ExtractOutlookAttachment",POL%,0,PieceIndex%,adr(s$))
        if res%=0
          message "Pièce jointe extraite dans:"+chr$(13)+chr$(10)+s$
        else
          message "Erreur en extraction de pièce jointe"
        end_if
      end_if
    end_if
  end_if
  return
  
navigation_reception:
  s$ = "Boîte de réception"
  res% = dll_call2("SelectOutlookFolder",POL%,adr(s$))
  return
  
information_dossiers_1:
  clear 1001
  res% = dll_call3("GetOutlookFolderList",POL%,0,handle(1001))
  message text$(1001)
  return

information_dossiers_2:
  clear 1001
  res% = dll_call3("GetOutlookFolderList",POL%,1,handle(1001))
  message text$(1001)
  return

information_dossiers_3:
  clear 1001
  res% = dll_call3("GetOutlookFolderList",POL%,2,handle(1001))
  message text$(1001)
  return
  
information_mails_1:
  clear 1001
  res% = dll_call3("GetOutlookMailList",POL%,0,handle(1001))
  message text$(1001)
  return

information_mails_2:
  clear 1001
  res% = dll_call3("GetOutlookMailList",POL%,1,handle(1001))
  message text$(1001)
  return

information_mails_3:
  clear 1001
  res% = dll_call3("GetOutlookMailList",POL%,2,handle(1001))
  message text$(1001)
  return
  
information_mail1:
  clear 1001
  ' Pour la démo, on choisit le premier mail de la liste.
  ' Mais on pourrait prendre n'importe quel mail entre 1 et count(1001).
  res% = dll_call3("GetOutlookMailList",POL%,1,handle(1001))
  mail% = val(item_read$(1001,1))
  clear 1001
  res% = dll_call3("GetOutlookMailInformation",POL%,mail%,handle(1001))
  message text$(1001)
  return
  
action_vider1:
  clear 1001
  res% = dll_call3("GetOutlookFolderList",POL%,2,handle(1001))
  s1$ = ""
  for i%=1 to count(1001)
    if instr(item_read$(1001,i%),"Courrier indésirable")>0
      s1$ = item_read$(1001,i%)
      exit_for
    end_if
  next i%
  i% = instr(s1$,",")
  if i%=0
    message "Dossier non trouvé"
    return
  end_if
  dossier% = val(left$(s1$,i%-1))
  s$ = mid$(s1$,i%+1,len(s1$))
  if message_confirmation_yes_no("Voulez-vous vraiment vider le dossier <"+s$+"> ?")<>1 then return
  res% = dll_call2("EmptyOutlookFolder",POL%,dossier%)
  if res%<0
    message "Erreur en vidant le dossier <"+s$+">"
  else
    message "Le dossier <"+s$+"> a été vidé."
  end_if
  return

Je vais maintenant coder la récupération des contacts avant de passer à la création ou au tranfert d'un mail.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

Interface avec Outlook Empty
MessageSujet: Re: Interface avec Outlook   Interface avec Outlook EmptyVen 19 Fév 2021 - 12:21

Nouvelle étape:
On récupère maintenant tous les contacts !
Dans le menu Navigation,, il y a deux lignes supplémentaires:
"Afficher les contacts" et "Cacher les contacts".
Si les contacts sont affichés, c'est à la place de l'arborescence des dossiers.
En haut, il y a un EDIT, vide initialement.
Le reste de l'epace à droite est rempli par la liste des contacts, affichés par leur nom complet.
Le EDIT en haut permet de filter les contacts:
lors de la saisie d'un critère dans ce champ, les contacts affichés sont filtrés au fur et à mesure.
Un clic sur un contact récupère l'ensemble des informations disponibles pour un contact.
elles sont affichées dans un message, mais elles sont trop nombreuses pour tenir sur une page de message.
Cependant, elles sont retournées dans un MEMO (incisible dans notre cas).
Chaque information occupe 1 ligne du format:
nom=information
Ainsi, un programme Panoramic peut facilement extraire l'information souhaitée.

Voici le programme de démo qui va avec:
Code:
' test_Outlook_2007.bas

label creer, deplacer, agrandir, sortir, UserEvent
label navigation_reception, information_dossiers_1, information_dossiers_2, information_dossiers_3
label information_mails_1, information_mails_2, information_mails_3, information_mail1, action_vider1
label navigation_contacts_oui, navigation_contacts_non

dim res%, POL%, s$, s1$, mail%, i%
dim Dossier%, MailIndex%, PieceIndex%, Sujet$, Expediteur$, Adresse$, Contact%

main_menu 1
  sub_menu 11 : parent 11,1 : caption 11,"Fichier"
    sub_menu 111 : parent 111,11 : caption 111,"Creer l'interface"        : on_click 111,creer
    sub_menu 112 : parent 112,11 : caption 112,"Déplacer l'interface"    : on_click 112,deplacer
    sub_menu 113 : parent 113,11 : caption 113,"Agrandir l'interface"    : on_click 113,agrandir
    sub_menu 114 : parent 114,11 : caption 114,"-"
    sub_menu 115 : parent 115,11 : caption 115,"Sortir"                  : on_click 115,sortir
  sub_menu 21 : parent 21,1 : caption 21,"Navigation" 
    sub_menu 211 : parent 211,21 : caption 211,"Boite de réception"      : on_click 211,navigation_reception
    sub_menu 212 : parent 212,21 : caption 212,"-"               
    sub_menu 213 : parent 213,21 : caption 213,"Afficher les contacts"    : on_click 213,navigation_contacts_oui
    sub_menu 214 : parent 214,21 : caption 214,"Cacher les contacts"      : on_click 214,navigation_contacts_non
  sub_menu 31 : parent 31,1 : caption 31,"Informations" 
    sub_menu 311 : parent 311,31 : caption 311,"Liste des dossiers - noms"                : on_click 311,information_dossiers_1
    sub_menu 312 : parent 312,31 : caption 312,"Liste des dossiers - objets"              : on_click 312,information_dossiers_2
    sub_menu 313 : parent 313,31 : caption 313,"Liste des dossiers - noms et objets"      : on_click 313,information_dossiers_3
    sub_menu 314 : parent 314,31 : caption 314,"-"               
    sub_menu 315 : parent 315,31 : caption 315,"Liste des mails - noms"                    : on_click 315,information_mails_1
    sub_menu 316 : parent 316,31 : caption 316,"Liste des mails - objets"                  : on_click 316,information_mails_2
    sub_menu 317 : parent 317,31 : caption 317,"Liste des mails - noms et objets"          : on_click 317,information_mails_3
    sub_menu 318 : parent 318,31 : caption 318,"-"               
    sub_menu 319 : parent 319,31 : caption 319,"Informations mail 1"                      : on_click 319,information_mail1
  sub_menu 41 : parent 41,1 : caption 41,"Actions" 
    sub_menu 411 : parent 411,41 : caption 411,"Vider Courrier indésirable"                : on_click 411,action_vider1
 
   
memo 1001 : hide 1001 : bar_both 1001   

dll_on "KGF.dll"

on_user_event UserEvent

end

sortir:
  POL% = dll_call1("DeleteOutlook",POL%)
  terminate
  return

creer:
  if POL%<>0 then return
  width 0,750
  height 0,600
  POL% = dll_call4("CreateOutlook",handle(0),10,10,1)
  return
 
deplacer:
  if POL%=0 then return
  full_space 0
  res% = dll_call3("LocateOutlook",POL%,0,0)
  return
 
agrandir:
  if POL%=0 then return
  res% = dll_call5("ResizeOutlook",POL%,width_client(0),height_client(0),400,200)
  return
 
UserEvent:
'  message "UserEvent: WPARAM="+right$("0000000"+hex$(USER_EVENT_WPARAM),8)+"  LPARAM="+right$("0000000"+hex$(USER_EVENT_LPARAM),8)
  if bin_and(USER_EVENT_WPARAM,hex("FF000000"))=hex("13000000")                : ' est-ce un USER_EVENT de Outlook ?

    if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00010000")              : ' est-ce une sélection de dossier ?
      Dossier% = USER_EVENT_LPARAM
      s$ = string$(200," ")
      res% = dll_call6("GetOutlookInformation",POL%,1,0,adr(s$),0,0)
      s$ = trim$(s$)
      message "Dossier choisi: "+s$
    end_if
   
    if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00020000")              : ' est-ce une sélection de mail ?
      MailIndex% = USER_EVENT_LPARAM
      Sujet$ = string$(200," ")
      Expediteur$ = string$(200," ")
      Adresse$ = string$(200," ")
      res% = dll_call6("GetOutlookInformation",POL%,2,USER_EVENT_LPARAM,adr(Sujet$),adr(Expediteur$),adr(Adresse$))
      Sujet$ = trim$(Sujet$)
      Expediteur$ = trim$(Expediteur$)
      Adresse$ = trim$(Adresse$)
      message "Mail choisi: "+Sujet$+chr$(13)+chr$(10)+"De: "+Expediteur$+"      Mail: "+Adresse$
    end_if
   
    if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00030000")              : ' est-ce une sélection de pièce jointe ?
      PieceIndex% = USER_EVENT_LPARAM
      s$ = string$(200," ")
      res% = dll_call6("GetOutlookInformation",POL%,3,PieceIndex%,adr(s$),0,0)
      s$ = trim$(s$)
      if message_confirmation_yes_no("Enregistrer la pièce jointe: "+s$)=1
        s$ = file_extract_path$(param_value$(0))+s$                            : ' extraure la pièce jointe dans le dossier du programme
        res% = dll_call4("ExtractOutlookAttachment",POL%,0,PieceIndex%,adr(s$))
        if res%=0
          message "Pièce jointe extraite dans:"+chr$(13)+chr$(10)+s$
        else
          message "Erreur en extraction de pièce jointe"
        end_if
      end_if
    end_if
   
    if bin_and(USER_EVENT_WPARAM,hex("00FF0000"))=hex("00040000")              : ' est-ce une sélection de contact ?
      Contact% = USER_EVENT_LPARAM
      clear 1001
      res% = dll_call3("GetOutlookContact",POL%,Contact%,handle(1001))
      message text$(1001)
    end_if

  end_if
  return
 
navigation_reception:
  s$ = "Boîte de réception"
  res% = dll_call2("SelectOutlookFolder",POL%,adr(s$))
  return
 
navigation_contacts_non:
  res% = dll_call2("ShowOutlookContacts",POL%,0)
  return
 
navigation_contacts_oui:
  res% = dll_call2("ShowOutlookContacts",POL%,1)
  return
 
information_dossiers_1:
  clear 1001
  res% = dll_call3("GetOutlookFolderList",POL%,0,handle(1001))
  message text$(1001)
  return

information_dossiers_2:
  clear 1001
  res% = dll_call3("GetOutlookFolderList",POL%,1,handle(1001))
  message text$(1001)
  return

information_dossiers_3:
  clear 1001
  res% = dll_call3("GetOutlookFolderList",POL%,2,handle(1001))
  message text$(1001)
  return
 
information_mails_1:
  clear 1001
  res% = dll_call3("GetOutlookMailList",POL%,0,handle(1001))
  message text$(1001)
  return

information_mails_2:
  clear 1001
  res% = dll_call3("GetOutlookMailList",POL%,1,handle(1001))
  message text$(1001)
  return

information_mails_3:
  clear 1001
  res% = dll_call3("GetOutlookMailList",POL%,2,handle(1001))
  message text$(1001)
  return
 
information_mail1:
  clear 1001
  ' Pour la démo, on choisit le premier mail de la liste.
  ' Mais on pourrait prendre n'importe quel mail entre 1 et count(1001).
  res% = dll_call3("GetOutlookMailList",POL%,1,handle(1001))
  mail% = val(item_read$(1001,1))
  clear 1001
  res% = dll_call3("GetOutlookMailInformation",POL%,mail%,handle(1001))
  message text$(1001)
  return
 
action_vider1:
  clear 1001
  res% = dll_call3("GetOutlookFolderList",POL%,2,handle(1001))
  s1$ = ""
  for i%=1 to count(1001)
    if instr(item_read$(1001,i%),"Courrier indésirable")>0
      s1$ = item_read$(1001,i%)
      exit_for
    end_if
  next i%
  i% = instr(s1$,",")
  if i%=0
    message "Dossier non trouvé"
    return
  end_if
  dossier% = val(left$(s1$,i%-1))
  s$ = mid$(s1$,i%+1,len(s1$))
  if message_confirmation_yes_no("Voulez-vous vraiment vider le dossier <"+s$+"> ?")<>1 then return
  res% = dll_call2("EmptyOutlookFolder",POL%,dossier%)
  if res%<0
    message "Erreur en vidant le dossier <"+s$+">"
  else
    message "Le dossier <"+s$+"> a été vidé."
  end_if
  return
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé





Interface avec Outlook Empty
MessageSujet: Re: Interface avec Outlook   Interface avec Outlook Empty

Revenir en haut Aller en bas
 
Interface avec Outlook
Revenir en haut 
Page 1 sur 5Aller à la page : 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: