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

VB 6 et antérieur Discussion :

VB6 - DDE - fonction DDEadvise


Sujet :

VB 6 et antérieur

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 6
    Points : 5
    Points
    5
    Par défaut VB6 - DDE - fonction DDEadvise
    Bonjour,

    Dans le cadre d'un projet professionel, je dois programmer un utilitaire en visual basic qui permet de piloter un logiciel tiers via le protocole DDE.

    Pour l'instant j'arrive à lire des informations et à envoyer des commandes via DDE sans soucis (via les commande DDERequest et DDEExecute).

    Cependant je me penche désormais vers la fonction DDEadvise, qui permet de mettre en ecoute mon logiciel, et des qu'il se passe une action précise dans le logiciel tiers, mon logiciel l'enregistre et peut prendre le relais....

    Cependant je ne trouve pas comment appeler la fonction DDEadvise() dans visual basic. Je ne trouve pas de référence qui l'a possède. Pour info, j'avais trouvé les fonctions "DDERequest" et "DDEExecute" dans la référence 'Microsoft Word 11.0 Object Library".

    Si vous avez une idée ou le nom du library, n'hésitez pas

    Merci d'avance.

    Gpo23

  2. #2
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Une fois établie une conversation DDE, c'est normalement LinkPoke qui est à utiliser pour celà, mais attention :

    Typically, information in a DDE conversation flows from source to destination. However, LinkPoke allows a destination object to supply data to the source. Not all source applications accept information supplied this way; if the source application doesn't accept the data, an error occurs.
    bon courage

  3. #3
    Membre habitué Avatar de MGD_Software
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 137
    Points : 139
    Points
    139
    Par défaut
    La fonction DDEAdvise n'exist pas dans VB6. Par contre, la méthode Poke existe, qui permet d'envoyer directement la valeur au client.

    En VB, DDE est implémenté à travers les différents contrôles qui supportent la propriété LinkItem. Lorsque ces contrôles sont serveurs, le lien est toujours "chaud". La méthode advise n'est pas nécessaire, car elle est implicite lors de la liaison. Il est toujours nécessaire de passer par un contrôle (éventuellement caché) pour être client DDE.

    Comportement "Serveur" : soit un projet vb "de base" nommé Projet1, ayant une feuille "Form1" contenant un textbox "Text1". La propriété LinkMode de la feuille est à "Source" (Très important, sinon ça ne marche pas, la feuille n'est pas serveur DDE)
    Dans une cellule Excel, on écrit la formule
    Miracle, dès qu'on tape quelque chose dans le champ de l'appli VB, la cellule Excel recopie exactement son contenu. C'est donc bien que l'appli a reçu un Advise de la part d'Excel.

    Comportement "Client" : le simple fait de donner à la propriété LinkMode d'un contrôle la valeur 1 (LinkAutomatic) provoque l'envoi du DDEAdvise au serveur. Bien évidemment, le lien peut être modifié à volonté au cours de l'application. Il est cependant recommandé de mettre la propriété LinkMode du contrôle client à None avant le changement de topic et/ou item, puis de la remettre à Automatic après modification.

    Toujours dans notre exemple, mettons un second textbox dans notre feuille VB, et renseignons ses propriétés dans l'évènement Load de la feuille :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Form_Load()
        Text2.LinkTopic = "Excel|Feuil1"
        Text2.LinkItem = "L2C1"
        Text2.LinkMode = vbLinkAutomatic
    End Sub
    Dès que le contenu de la cellule A2 de la feuille Excel est validé, le textbox de la feuille VB est mis à jour. Il n'y a plus qu'à exploiter l'évènement Change pour traiter la nouvelle valeur.

    Attention, il y a un petit Pb avec excel : Le contenu des cellules est augmenté des caractères CRLF, qui ne sont pas compris par le champ textbox standard (cela donne deux petits carrés noirs très disgracieux). La solution au problème est simple : il suffit de mettre la propriété Multiline du contrôle à True. Mais il faut en tenir compte lors du traitement de la valeur.

    C'était bien le sujet ?

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Bonjour

    Merci beaucoup pour cette precieuse réponse, c'est parfaitement ce que je recherchais.

    Gpo

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB6]la fonction FileCopy
    Par ennamsaoui dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 10/05/2006, 10h30
  2. [VB6] XML, fonction récursive de recherche
    Par kboo dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 24/04/2006, 21h27
  3. [VB6]Une fonction comme Trim(), mais pour les "-"
    Par Jihnn dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 13/04/2006, 19h43
  4. [VB6] et fonction d 'excel
    Par sofy2006 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 08/04/2006, 08h53
  5. [VB6] [Syntaxe] Fonction renvoyant un tableau d'objets
    Par Troopers dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 18/10/2002, 15h33

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