Bonjour,
J'utilise une application A qui envoie des données vers une application B via DDE
Ces 2 applications sont des logiciels déjà compilés, sur le 2eme je peux récupérer le source fait en VB6.
J'ai les infos suffisantes pour récupérer les données DDE de l'appli A ou pour envoyer des données du même type vers l'appli B.
J'ai donc testé en utilisant les composants DdeClientItem, DdeClientConv, DdeServerItem, DdeServerConv (Delphi2010):
- un 1er programme client qui récupère les données venant du programme A
OK ça marche impeccablement.
- un 2eme programme serveur qui envoie des données vers le programme B
OK ça marche impeccablement.
Mais mon but est de me placer entre A et B, c'est à dire faire un programme qui reçoit les données DDe ( 1 seule chaine) du programme A (pour faire un graphique) et de les renvoyer vers le programme B.
[Le DDE server A ne travaille pas en mode broadcast, donc cela me semble la seule solution, sinon j'aurais pu "écouter" seulement ce que l'appli A envoie à l'appli B, mais l'appli A met en route son server DDe une fois qu'on lui a désigné le client.]
J'ai fait une petite appli C avec à la fois un client DDe pour recevoir les données de l'appli A et un serveur DDe pour renvoyer la chaine de caractères vers l'appli B.
Mais un seul des 2 canaux DDE fonctionne à la fois:
Si je démarre l'appli A qui appelle mon appli C le client DDE de C s'ouvre et reçoit les données.
Si je démarre l'appli B et je démarre mon appli C (ou l'inverse), l'appli B trouve le server DDE de C qui s'ouvre automatiquement.
Mais si je démarre l'appli A qui appelle mon appli C et que je démarre l'appli B, celle ci ne trouve plus le serveur DDE de C et celui ci reste fermé.
Donc impossible de faire une appli qui fait à la fois Client DDE et serveur DDE. Pourtant la théorie et les tuto très bien faits disent que c'est possible :http://fbeaulieu.developpez.com/guide/?page=page_17
Il me semble que mes 2 composants client et serveur veulent ouvrir le même canal DDE, il faudrait pouvoir utiliser le canal 1 et le canal 2. Si ils sont sur le même canal, cela se comprend qu'un seul fonctionne. Mais dans les composants DDE de delphi je n'ai pas trouvé de paramétrage pour cela.
Je sais que c'est pourtant possible d'y arriver car il y avait un source (mais lien disparu car trop vieux) qui le faisait sur le forum d'Embarcadero.
Quelqu'un a-t-il la solution?
Merci d'avance pour votre aide.
JP
J'utilise une application A qui envoie des données vers une application B via DDE
Ces 2 applications sont des logiciels déjà compilés, sur le 2eme je peux récupérer le source fait en VB6.
J'ai les infos suffisantes pour récupérer les données DDE de l'appli A ou pour envoyer des données du même type vers l'appli B.
J'ai donc testé en utilisant les composants DdeClientItem, DdeClientConv, DdeServerItem, DdeServerConv (Delphi2010):
- un 1er programme client qui récupère les données venant du programme A
OK ça marche impeccablement.
- un 2eme programme serveur qui envoie des données vers le programme B
OK ça marche impeccablement.
Mais mon but est de me placer entre A et B, c'est à dire faire un programme qui reçoit les données DDe ( 1 seule chaine) du programme A (pour faire un graphique) et de les renvoyer vers le programme B.
[Le DDE server A ne travaille pas en mode broadcast, donc cela me semble la seule solution, sinon j'aurais pu "écouter" seulement ce que l'appli A envoie à l'appli B, mais l'appli A met en route son server DDe une fois qu'on lui a désigné le client.]
J'ai fait une petite appli C avec à la fois un client DDe pour recevoir les données de l'appli A et un serveur DDe pour renvoyer la chaine de caractères vers l'appli B.
Mais un seul des 2 canaux DDE fonctionne à la fois:
Si je démarre l'appli A qui appelle mon appli C le client DDE de C s'ouvre et reçoit les données.
Si je démarre l'appli B et je démarre mon appli C (ou l'inverse), l'appli B trouve le server DDE de C qui s'ouvre automatiquement.
Mais si je démarre l'appli A qui appelle mon appli C et que je démarre l'appli B, celle ci ne trouve plus le serveur DDE de C et celui ci reste fermé.
Donc impossible de faire une appli qui fait à la fois Client DDE et serveur DDE. Pourtant la théorie et les tuto très bien faits disent que c'est possible :http://fbeaulieu.developpez.com/guide/?page=page_17
Il me semble que mes 2 composants client et serveur veulent ouvrir le même canal DDE, il faudrait pouvoir utiliser le canal 1 et le canal 2. Si ils sont sur le même canal, cela se comprend qu'un seul fonctionne. Mais dans les composants DDE de delphi je n'ai pas trouvé de paramétrage pour cela.
Je sais que c'est pourtant possible d'y arriver car il y avait un source (mais lien disparu car trop vieux) qui le faisait sur le forum d'Embarcadero.
Quelqu'un a-t-il la solution?
Merci d'avance pour votre aide.
JP
Aucun commentaire:
Enregistrer un commentaire