PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Passage de paramètres entre deux applications
Passage de paramètres entre deux applications
Débuté par Nicolas, 24 aoû. 2005 13:14 - 12 réponses
Posté le 24 août 2005 - 13:14
Bonjour,

J'ai deux applications WD, l'application P1 qui appelle l'application P2 via la commande LanceAppli. L'application appelée (P2) reçoit des paramètres par la ligne de commande et doit retourner un ou plusieurs paramètres à l'application appellante (P1). Or, je n'arrive pas a renvoyer des données à l'application appelante (P1). Quelqu'un aurait-il une solution à ce problème.
Merci par avance

Nicolas
Posté le 24 août 2005 - 13:17
Nicolas avait écrit le 24/08/2005 :
Bonjour,

J'ai deux applications WD, l'application P1 qui appelle l'application P2 via
la commande LanceAppli. L'application appelée (P2) reçoit des paramètres par
la ligne de commande et doit retourner un ou plusieurs paramètres à
l'application appellante (P1). Or, je n'arrive pas a renvoyer des données à
l'application appelante (P1). Quelqu'un aurait-il une solution à ce problème.
Merci par avance

Nicolas


bonjour

en écrivant des infos dans un fichier texte temporaire ?

titou44 chez freesurf.fr

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com
Posté le 24 août 2005 - 13:27
Effectivement, j'utilise un fichier TXT ou INI.
Posté le 24 août 2005 - 15:52
Pourquoi pas simplement un fichier HF !....
C'est baucoup plus simple et beaucoup plus sûr que des .TXT et .INI

"Nicolas" <guest@newsgroup.fr> a écrit dans le message de news:
430c260c@news.pcsoft.fr...

Bonjour,

J'ai deux applications WD, l'application P1 qui appelle l'application P2
via la commande LanceAppli. L'application appelée (P2) reçoit des
paramètres par la ligne de commande et doit retourner un ou plusieurs
paramètres à l'application appellante (P1). Or, je n'arrive pas a renvoyer
des données à l'application appelante (P1). Quelqu'un aurait-il une
solution à ce problème.
Merci par avance

Nicolas

Posté le 24 août 2005 - 16:19
En quoi est-ce plus sur selon toi ?
Posté le 24 août 2005 - 16:27
"Nicolas" <guest@newsgroup.fr> a écrit dans le message de news:
430c260c@news.pcsoft.fr...

Bonjour,

J'ai deux applications WD, l'application P1 qui appelle l'application P2
via la commande LanceAppli. L'application appelée (P2) reçoit des
paramètres par la ligne de commande et doit retourner un ou plusieurs
paramètres à l'application appellante (P1). Or, je n'arrive pas a renvoyer
des données à l'application appelante (P1). Quelqu'un aurait-il une
solution à ce problème.
Merci par avance

Nicolas


un partage de mémoire peut être
http://www.windasso.org/cgi-bin/gesmod.exe…
Cdt JeAn-PhI
Posté le 24 août 2005 - 17:21
Le partage de fichier HF est intégré à Windev, pas aux TXT.
Si tu veux mettre une valeur dans un fichier TXT et être sûr de la lire en
intégrité de l'autre coté, tu dois "Bloquer" le TXT durant son écriture.
J'avais moi aussi commancé par ce type de fichier (TXT et INI) j'avais que
des ennuis, puis j'avais amélioré avec un fichier de blocage durant
l'écriture !... enfin, une vrai usine à gaz !

Et puis le celebre adage "Pourquoi faire compliqué quand on peu faire
simple" : un fichier HF de transit avec les rubriques correspondantes aux
parametres dans un sens et aux resultats dans l'autre, plus de soucis de
passage de paramètre ou de retour de data, quelques instructions de type
Hxxx et c'est emballé !...

"Polo" <paul.gera@free.fr> a écrit dans le message de news:
430c51d2$1@news.pcsoft.fr...

En quoi est-ce plus sur selon toi ?

Posté le 25 août 2005 - 09:57
Utilisation de message Windows

Initialisation de P1 :

// variables globale de projet P1
glbNumeroDeMessage est un entier
glbHandleFenetre est un entier
********************
// Initialisation de fenFenetre (cette fenêtre attend le retour du pgm2)
lpString est une chaîne ASCIIZ sur 32

glbHandleFenetre = handle(fenFenetre) //

// On crée un message Windows
lpString = "YwNomMessage" // un nom quelquonque
glbNumeroDeMessage=API("USER32","RegisterWindowMessageA",&lpString)

Evénement("prcLocalDeFenetre","fenFenetre",glbNumeroDeMessage)

************************
// Procedure locale de fenFenetre
// Cette procédure est déclenchée lorsque fenFenetre reçoit un message
prcLocalDeFenetre (x,y,z)
Trace(x,y,z)

ou
chTexte est une chaine fixe sur 32
Transfert(&chTexte,y,z)
Trace(chTexte)

// y et z sont les paramètres utilisés dans le SendMessage
RENVOYER 1
************************
Appeler le programme P2 avec les paramètres glbHandleFenetre et glbNumeroDeMessage
(variables globales pHandleFenetre et pNumeroDeMessage dans le programme P2)

Le programme P2 peut envoyer des valeurs au programme P1 par

p1 est entier
p2 est entier
chTexte est une chaine fixe sur 32 = "Bonjour"
p1 = &chTexte
p2 = taille(chTexte)

SendMessage(pHandleFenetre,pNumeroDeMessage,p1,p2)

****************************
Avec quelques petits aménagements, le dialogue peut être bi-directionnel.
Par exemple :
Dans le pgm P2, on implémente une procédure prcLocalDeFenetre identique sur
une fenêtre

P2 envoie à P1 le handle de la fenêtre
Le Pgm P1 peut donc envoyer des messages à P2

*****************************
Bon dev

Yann
Posté le 25 août 2005 - 15:25
Je me souviens avoir enployé les messages Windows et ... la catastrophe (en
Win98), cas si tu as une CPU un peu lente, et que l'usager "secoue" sa
souris, les messages enntrant (surtout ceux de la souris)excedent la taille
de la pile des messages, et des messages était perdus. Pour XP je ne sais
pas si c'est toujours le cas.

"Yann" <ywagner@worldcom.ch> a écrit dans le message de news:
430d496a$1@news.pcsoft.fr...



Utilisation de message Windows

Initialisation de P1 :

// variables globale de projet P1
glbNumeroDeMessage est un entier
glbHandleFenetre est un entier
********************
// Initialisation de fenFenetre (cette fenêtre attend le retour du pgm2)
lpString est une chaîne ASCIIZ sur 32

glbHandleFenetre = handle(fenFenetre) //

// On crée un message Windows
lpString = "YwNomMessage" // un nom quelquonque
glbNumeroDeMessage=API("USER32","RegisterWindowMessageA",&lpString)

Evénement("prcLocalDeFenetre","fenFenetre",glbNumeroDeMessage)

************************
// Procedure locale de fenFenetre
// Cette procédure est déclenchée lorsque fenFenetre reçoit un message
prcLocalDeFenetre (x,y,z)
Trace(x,y,z)

ou
chTexte est une chaine fixe sur 32
Transfert(&chTexte,y,z)
Trace(chTexte)

// y et z sont les paramètres utilisés dans le SendMessage
RENVOYER 1
************************
Appeler le programme P2 avec les paramètres glbHandleFenetre et
glbNumeroDeMessage
(variables globales pHandleFenetre et pNumeroDeMessage dans le programme
P2)

Le programme P2 peut envoyer des valeurs au programme P1 par

p1 est entier
p2 est entier
chTexte est une chaine fixe sur 32 = "Bonjour"
p1 = &chTexte
p2 = taille(chTexte)

SendMessage(pHandleFenetre,pNumeroDeMessage,p1,p2)

****************************
Avec quelques petits aménagements, le dialogue peut être bi-directionnel.
Par exemple :
Dans le pgm P2, on implémente une procédure prcLocalDeFenetre
identique sur
une fenêtre

P2 envoie à P1 le handle de la fenêtre
Le Pgm P1 peut donc envoyer des messages à P2

*****************************
Bon dev

Yann
Posté le 25 août 2005 - 16:05
Bonjour,

La solution via un fichier HF me paraît élégante.
Regarde aussi les sockets.

Bon développement

C_Freddy
Posté le 26 août 2005 - 12:33
Tout d'abord merci pour ton aide ainsi qu'à tous ceux qui ont émis des idées.

J'ai fait comme cité dans ton exemple et j'ai un problème lors de la réception : j'ai un message d'erreur "L'adresse source fournie (0x009104A8 sur 8 octets) est invalide. Elle ne représente pas une adresse mémoire valide en lecture." L'adresse reçue par le programme appelant correspond bien à celle envoyée par le programme appelé. J'ai fait pas mal de tests avec modification du code sans arriver à un résultat concluant. Aurais-tu une idée de la raison de cette erreur ?
Merci par avance et bonne journée.

Nicolas
Posté le 29 août 2005 - 12:21
Transmet-moi le bout de code qui plante

ywagner@worldcom.ch


A+

YAnn
Posté le 23 septembre 2005 - 14:43
Bonjour,

Dans le même esprit, quelle(s) API(s) utiliser pour qu'une appli Windev puisse lire le contenu d'un champ d'une appli non Windev ?

Merci pour toute idée.

Bons dév.
EJ