IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Problème avec l'objet automation dynamique


Sujet :

WinDev

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 43
    Points : 26
    Points
    26
    Par défaut Problème avec l'objet automation dynamique
    Bonjour,

    je voudrais afficher un email lorsque celui-ci est sélectionné.
    J'ai testé ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    PROCEDURE PF_GetMailSelected()
     
    uneDate 	est une Date
    uneHeure	est une DateHeure
     
    Outlk	est un objet OLE "Outlook.Application"
    MailReply 	est un objet OLE dynamique
     
    POUR i = 1 _A_ Outlk>>ActiveExplorer>>Selection>>Count
    //On récupère l'objet mail
    MailReply = Outlk>>ActiveExplorer>>Selection(i)
     
    uneHeure  = MailReply>>ReceivedTime
    uneDate	  = uneHeure..Date
     
    //On envoie les informations récupérées vers les champs
    SA_Sujet 		= MailReply>>Subject
    SA_Heure		= uneHeure
    SA_Date			= uneDate
    SA_Expediteur  	= PF_GetSenderSmtpAddress(MailReply)
    //SA_Texte_HTML	= RC+RC+ "-----Message d'origine-----" +rc+ "Expéditeur : " +SA_Expediteur+rc+ "Reçu le : " +SA_date+ " à " +SA_Heure+rc+ "Objet : " +SA_Sujet+rc+rc+MailReply>>Body
    SA_Texte_HTML	= MailReply>>Body
     
    MailReply>>Display()
     
     
    FIN
    Mais j'ai une erreur qui me dit que l'objet Selection n'est pas un objet automation. Quelqu'un aurait-il une idée du problème? (ActiveExplorer ne pose aucun problème)

    Cordialement !

  2. #2
    Membre éprouvé Avatar de WDKyle
    Homme Profil pro
    Analyste-Programmeur
    Inscrit en
    Septembre 2008
    Messages
    1 200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-Programmeur

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 200
    Points : 962
    Points
    962
    Par défaut
    Bonsoir,

    Je suis également en plein dans le pilotage d'Outlook par automation OLE et je déclare comme ceci et tout fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MailReply 	est un objet Automation dynamique
    CF : http://www.developpez.net/forums/d10...-table-windev/

  3. #3
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 951
    Points : 9 280
    Points
    9 280
    Par défaut
    hello,
    pas de problème en windev 16 avec ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    // Outlk	est un objet OLE "Outlook.Application"
    Outlk	est un objet OLE dynamique
    MailReply 	est un objet OLE dynamique
     Outlk=ObjetActif("OutLook.Application")
    SI  Outlk = Null ALORS
    // On lance OutLook
    	 Outlk = allouer un objet Automation "Outlook.Application"
    FIN
    POUR i = 1 _A_ Outlk>>ActiveExplorer>>Selection>>Count
    	//On récupère l'objet mail
    	MailReply = Outlk>>ActiveExplorer>>Selection(i)
    Trace(MailReply>>Subject)	
    	MailReply>>Display()	
    FIN
    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 43
    Points : 26
    Points
    26
    Par défaut
    Merci de vos réponses ! Je suis en version Windev 19, peut être que pour cette version, l'utilisation n'est pas la même?

    J'avais trouvé ce code qui fonctionnait mieux, mais qui m'affichait toujours le même mail à chaque fois :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    PROCEDURE PF_GetMailSelected()
     
    uneDate 	est une Date
    uneHeure	est une DateHeure
     
    Outlk	est un objet Automation dynamique = ObjetActif("Outlook.Application")
    MailReply 	est un objet Automation dynamique
     
    Outlk = allouer un objet OLE "Outlook.Application"
     
    SELON Outlk>>ActiveWindow>>Class//Vérification de la Classe de la fenêtre en cours
     
    	CAS 35//Inspector
     
    	MailReply=Outlk>>ActiveWindow>>CurrentItem
     
    	CAS 34//Explorer
     
    		// Attention dans ce cas il peut y avoir plusieurs Mails sélectionnés.
    		POUR i= 1 _A_ Outlk>>ActiveWindow>>Selection>>Count
    			MailReply=Outlk>>ActiveWindow>>Selection(i)
     
    			SI Outlk>>ActiveWindow>>Selection(i)>>Class=43 ALORS 
     
    				MailReply = Outlk>>ActiveExplorer>>Selection(i)
    			FIN
     
    			uneHeure  = MailReply>>ReceivedTime
    			uneDate	  = uneHeure..Date
     
    			//On envoie les informations récupérées vers les champs
    			SA_IDMESSAGE    = MailReply>>EntryId
    			SA_Sujet 		= MailReply>>Subject
    			SA_Heure		= uneHeure
    			SA_Date			= uneDate
    			SA_Expediteur  	= PF_GetSenderSmtpAddress(MailReply)
    			//SA_Texte_HTML	= RC+RC+ "-----Message d'origine-----" +rc+ "Expéditeur : " +SA_Expediteur+rc+ "Reçu le : " +SA_date+ " à " +SA_Heure+rc+ "Objet : " +SA_Sujet+rc+rc+MailReply>>Body
    			SA_Texte_HTML	= MailReply>>Body
     
    			SELON TB_Destinataire.CT_Type
    				CAS SELECTION_DEST
    					TB_Destinataire.CT_Destinataire = MailReply>>To
    				CAS SELECTION_CC
    					TB_Destinataire.CT_Destinataire = MailReply>>CC
    				CAS SELECTION_CCI
    					TB_Destinataire.CT_Destinataire = MailReply>>BCC				
     
    			FIN
     
     
    			MailReply>>Display()
    		FIN
    FIN
    Edit : Ok, je viens de comprendre ! il faut que Outlook soit lancé pour que Selection soit reconnu ... mais le but de l'application est d'éviter de lancer Outlook et de tout faire à partir de cette application ! Y a-t-il un moyen de communiquer directement avec le serveur Exchange et non pas avec Outlook?

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 43
    Points : 26
    Points
    26
    Par défaut
    Re, je suis un peu plus avancé mais toujours le même problème pour récupérer le mail sélectionné dans mon application(une boîte de messagerie) windev. Je suis obligé d'ouvrir Outlook pour l'instant..
    Y aurait-il un moyen de faire ce que je veut sans ouvrir Outlook?

    voici mon code actuel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    PROCEDURE PF_GetMailSelected()
     
    uneDate 	est une Date
    uneHeure	est une DateHeure
     
    Nb est un entier
    j est un entier
    ligne est un entier
     
    Adresse est une chaîne
     
    Outlk	est un objet OLE dynamique
    MailReply 	est un objet OLE dynamique
    Outlk=ObjetActif("OutLook.Application")
     
    PR_SMTP_ADDRESS est une chaîne = "http://schemas.microsoft.com/mapi/proptag/0x39FE001E"
     
    SI  Outlk = Null ALORS
    	// On lance OutLook
    	Outlk = allouer un objet Automation "Outlook.Application"
    FIN
     
    	//Pour le nombre de sélection d'un mail
    	POUR i = 1 _A_ Outlk>>ActiveExplorer>>Selection>>Count
    		MailReply = Outlk>>ActiveExplorer>>Selection(i) //Le mail correspond à une sélection
     
    		uneHeure  = MailReply>>ReceivedTime 
    		uneDate	  = uneHeure..Date
     
    		SA_Sujet..Grisé = Vrai
     
    		//On envoie les informations récupérées vers les champs
    		SA_IDMESSAGE    = MailReply>>EntryId
    		SA_Sujet 		= "Re :" + MailReply>>Subject
    		SA_Heure		= uneHeure
    		SA_Date			= uneDate
    		SA_Expediteur  	= PF_GetSenderSmtpAddress(MailReply)
    		SA_Texte_HTML	= RC+RC+ "-----Message d'origine-----" +RC+ "Expéditeur : " +SA_Expediteur+RC+ "Reçu le : " +SA_Date+ " à " +SA_Heure+RC+...
    									"Objet : " +SA_Sujet+RC+RC+MailReply>>Body
    		//SA_Texte_HTML	= MailReply>>Body
     
    		Nb = MailReply>>recipients>>Count
     
    		//Pour le nombre de destinataire trouvé
    		POUR j = 1 A Nb
    			Adresse = PF_ExtraitAdresseEmail(MailReply>>recipients(j)>>Address) //On extrait l'adresse email du destinataire
     
    			QUAND EXCEPTION DANS
    				SI Position(Adresse, "@") < 1 ALORS                   
    					Adresse = MailReply>>recipients(j)>>PropertyAccessor>>GetProperty(PR_SMTP_ADDRESS)
    				FIN 
    			FAIRE
    			FIN
     
    			ligne = TableAjouteLigne(TB_Destinataire)
     
    			//Selon le type du destinataire
    			SELON MailReply>>Recipients(i)>>Type
    				CAS 1
    					TB_Destinataire.CT_Destinataire[ligne]	+= Adresse 
    					TB_Destinataire.CT_Type		   [ligne]  = SELECTION_DEST
    				CAS 2
    					TB_Destinataire.CT_Destinataire[ligne]	+= Adresse 
    					TB_Destinataire.CT_Type		   [ligne]  = SELECTION_CC
    				CAS 3
    					TB_Destinataire.CT_Destinataire[ligne]  += Adresse
    					TB_Destinataire.CT_Type		   [ligne]  = SELECTION_CCI
    			FIN
    		FIN
    	FIN
     
    	//On affiche le mail
    	MailReply>>Display()
    Si je n'ouvre pas Outlook, il ne reconnait pas Selection (Outlk>>ActiveExplorer>>Selection), mais ça je l'ai déjà dis .

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 43
    Points : 26
    Points
    26
    Par défaut
    Donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Outlk>>ActiveExplorer>>Selection
    choisi en fait le mail que j'ai sélectionné dans Outlook, mais moi je veux récupérer le mail sélectionner dans mon application? Quelqu'un aurait-il une idée?

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 43
    Points : 26
    Points
    26
    Par défaut
    Vraiment personne?

  8. #8
    Membre chevronné Avatar de EDM-TAHITI
    Homme Profil pro
    Directeur Service informatique et projet développement
    Inscrit en
    Janvier 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Directeur Service informatique et projet développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 994
    Points : 1 995
    Points
    1 995
    Par défaut
    Hello,
    Bon, je me dévoue....
    Alors, si tu te poses la bonne question : puis récupérer un logiciel/data si ce dernier n'est pas ouvert? --> réponse absolue : NON!
    Donc je répond à ta question :
    Re, je suis un peu plus avancé mais toujours le même problème pour récupérer le mail sélectionné dans mon application(une boîte de messagerie) windev. Je suis obligé d'ouvrir Outlook pour l'instant..
    Y aurait-il un moyen de faire ce que je veut sans ouvrir Outlook?
    En revanche, chose que je n'ai jamais essayée, il existe une option dans Outlook qui est le mode 'déconnecté'

    Nom : Screen Shot 02-18-16 at 01.51 PM.PNG
Affichages : 1350
Taille : 58,6 Ko
    Peut être que cela devrait suffire? A te lire sur la suite
    Bon Dev.
    le savoir est dans les livres, 'the magic touch F1'
    Amicalement
    Eric

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 43
    Points : 26
    Points
    26
    Par défaut
    Merci de votre réponse..

    Je vais expliquer concrètement ce que je veux faire :

    Je récupère mes emails dans un tableau avec sujet,destinataire,message etc et bien sur son ID ! donc là tout va bien.
    Ce que j'aimerais faire, c'est sélectionner un email et double-cliquer dessus afin de le visualiser. Ma fenêtre s'ouvre et doit contenir les informations de l'email sélectionné dans le tableau. Mais ce que je trouve bizarre, c'est qu'à l'heure actuelle, il récupère toujours le dernier mail du tableau mais je sais pas pourquoi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    PROCEDURE PF_GetMailSelected()
     
    //Déclarations des variables
    //--------------------------
    uneDate 		est une Date
    uneHeure		est une DateHeure
     
    Nb 				est un entier
    i 				est un entier
    ligne 			est un entier
     
    Adresse 		est une chaîne
     
    //Mape à l'adresse SMTP du destinataire
    //-------------------------------------
    PR_SMTP_ADDRESS est une chaîne = "http://schemas.microsoft.com/mapi/proptag/0x39FE001E"
     
    		//Recherche des informations du mail sélectionné
    		//----------------------------------------------
     
    		uneHeure  		= MailItem>>ReceivedTime
    		uneDate	 		= uneHeure..Date
     
    		SA_Sujet..Grisé = Vrai
     
    		//On envoie les informations récupérées vers les champs
    		//-----------------------------------------------------
    		SA_IDMESSAGE    = MailItem>>EntryID
    		SA_Expediteur	= PG_GetSenderSmtpAddress(MailItem)		//SA_Expediteur	= Pg_GetSenderSmtpAddress(MailItem)
    		SA_Sujet 		= MailItem>>Subject
    		SA_Heure		= uneHeure
    		SA_Date			= uneDate
    		SA_Texte_HTML   = MailItem>>HTMLBody
     
    		//Recherche des destinataires 
    		//---------------------------
    		Nb 				= MailItem>>recipients>>Count
     
    		QUAND EXCEPTION DANS
    			POUR i = 1 A Nb
     
    				Adresse = PG_ExtraitAdresseEmail(MailItem>>recipients(i)>>Address)
     
    					SI Position(Adresse, "@") < 1 ALORS                   
    						Adresse = MailItem>>recipients(i)>>PropertyAccessor>>GetProperty(PR_SMTP_ADDRESS)
    					FIN 
     
    					//Ajoute les destinataires récupérés
    					//----------------------------------
    					ligne = TableAjouteLigne(TB_Destinataire)
     
    					SELON MailItem>>Recipients(i)>>Type
    						CAS 1
    							TB_Destinataire.CT_Destinataire[ligne]	+= Adresse 
    							TB_Destinataire.CT_Type		   [ligne]  = SELECTION_DEST //To		
    						CAS 2
    							TB_Destinataire.CT_Destinataire[ligne]	+= Adresse 
    							TB_Destinataire.CT_Type		   [ligne]  = SELECTION_CC //CC
    						CAS 3
    							TB_Destinataire.CT_Destinataire[ligne]  += Adresse
    							TB_Destinataire.CT_Type		   [ligne]  = SELECTION_CCI //CCI
    					FIN
    				FIN
    			FAIRE
    			FIN
    Je sais qu'avec la fonction EmailLitMessage de Windev je pouvais faire cela, mais en méthode OLE je ne vois pas du tout

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 43
    Points : 26
    Points
    26
    Par défaut
    Peut être que je suis à côté de la plaque...

    Faut que je trouve un équivalent de EmailLitMessage en OLE. Quelqu'un sait?

Discussions similaires

  1. Réponses: 4
    Dernier message: 03/05/2010, 14h17
  2. Problème avec l'objet FileSystemObject
    Par Poussy-Puce dans le forum ASP
    Réponses: 4
    Dernier message: 27/10/2005, 16h25
  3. Problème avec création de fenêtre dynamique
    Par FredericB dans le forum C++Builder
    Réponses: 3
    Dernier message: 29/09/2005, 17h21
  4. Problèmes avec une TForm créée dynamiquement
    Par Pascal Jankowski dans le forum Composants VCL
    Réponses: 5
    Dernier message: 30/03/2005, 11h55
  5. [FLASH MX] Problème avec l'objet Date
    Par n_tony dans le forum Flash
    Réponses: 13
    Dernier message: 22/03/2005, 13h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo