[API] SendMessage et attente de la reponse
Stagiaire WDF
Inscrit:
14/02/2005 13:09
De Londres (UK)
Post(s): 9
D'apres la Faq API SendMessage, on peut utiliser Sendmessage pour communiquer entre 2 applis, Wd et par ex. C.

Par contre cela ne dit pas si l'utilisation de Sendmessage bloque le process appelant.
Ex :
Appli A en C
Appli B en WD

A appelle B via le sendMessage.
Dans B, la procedure attachée a l'evt recu se met en marche.

Est-ce que A continue pendant que la proc dans B s'execute ?

Si non, comment faire pour que l'application appelante A attende la fin de l'execution de la proc dans B pour continuer ?

Romain.

Contribution le : 16/02/2005 10:22
Créer un fichier PDF de la contribution Imprimer


Re: [API] SendMessage et attente de la reponse
Anonyme
Bonjour ,

Si je comprends bien tu veux appeler une procedure via un sendmessage et tu veux que ton process attende la fin de la procedure pour continuer son traitement.

Si telle est le cas tu peux :
- creer une semaphore nommée ( API :CreateSemaphore)



Contribution le : 16/02/2005 11:53
Créer un fichier PDF de la contribution Imprimer


Re: [API] SendMessage et attente de la reponse
Anonyme
C'est exactement cela.

J'en deduis que tu suggeres le pseudo code suivant:

Appli A :

SendMessage to B
Boucle
...Attente semaphore nettoye par B
fin
... continuer le process A

Appli B:

evt Reception SendMessage
creer semaphore
... process
detruire semaphore

En faisant ainsi, suis-je sur d'avoir le temps de creer le semaphore dans B avant que A ne continue ?

Les semaphores WD sont-ils compatibles avec les API Win32 standard ?

Merci.

Romain.

Contribution le : 16/02/2005 13:07
Créer un fichier PDF de la contribution Imprimer


Re: [API] SendMessage et attente de la reponse
Animateur WDF
Inscrit:
02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
Bonjour,

Contrairement au PostMessage qui post son message dans un pool et qui continu sont traitement sans attendre que l'objet ai bien reçu le message,
Il me semble que le SendMessage est bloquant jusqu'au moment ou l'objet a qui l'on veut envoyer le message l'ai bien reçu mais pas au dela.

Pour cela il faudrait établir un protocol via SendMessage entre les deux applis du genre:

Prog_A envoie message à Prog_B (demande de traitement)
Prog_A reste à l'écoute de Prog_B via une boucle
Quand Prog_B a fini traitement
Prog_B envoi message OK a Prog_A (Traitement fini)
Prog_A qui la boucle et continu son traitement.


Si il y a dialogue qu'entre deux applis je ne suis pas sur qu'il soit nécessaire d'utiliser les sémaphores.

N'ayant pas mis en place un tel procédé je laisse la place aux utilisateurs plus expérimenté en la matière.

Contribution le : 16/02/2005 13:56
_________________
@A+
Contact (privé)......
email : drcharly@wdforge.org
[DrCharly93]
Créer un fichier PDF de la contribution Imprimer


Re: [API] SendMessage et attente de la reponse

Inscrit:
19/11/2002 12:20
Post(s): 390
Le sendmessage (la version bloquante) est relativement dangereuse si on n'y fait pas gaffe :)
Il vaut mieux utiliser un postmessage, ce qui oblige certes à gérer les boucles et les acknowledge, mais bon, c'est plus facile du coup de gérer les plantages...

Sinon, il reste la possibilité des sockets, enfin, les sockets TCP vu que Windev ne gère pas les sockets UDP... mais bon, c'est le marteau pour écraser un moustique...

Contribution le : 16/02/2005 22:47
Créer un fichier PDF de la contribution Imprimer


Re: [API] SendMessage et attente de la reponse
Animateur WDF
Inscrit:
02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
Bonjour,

Les Sockets UDP sont une évolution de la version 9 de WinDev et malheureusement pas dispo a ma connaissance avec la version 8.


Contribution le : 17/02/2005 09:19
_________________
@A+
Contact (privé)......
email : drcharly@wdforge.org
[DrCharly93]
Créer un fichier PDF de la contribution Imprimer


[résolu] Re: [API] SendMessage et attente de la reponse
Stagiaire WDF
Inscrit:
14/02/2005 13:09
De Londres (UK)
Post(s): 9
En fait, j'ai fait qqs tests et donc mon cas, il s'avere que SendMessage marche bien car il est tout simplement bloquant en attente de la fin d'exe du trt WD qui gere l'evenement en reception du message.

Je m'explique:
- j'ai mon prog WD qui appelle un DLL en delphi qui pose un hook et dont la fonction callback F est aussi dans la DLL.
- Qd F est appelée, elle envoie un SendMessage a l'appli Wd. - Dans l'appli WD, un evt attrape le message et execute un traitement.
-En execution, la fonction F attend que le proc WD soit finie pour continuer.

Donc dans mon cas particulier, je n'ai pas besoin d'utiliser de semaphore ou autre mecanisme de synchro

Par contre, je ne sais pas si c'est applicable dans d'autres cas...

Merci pour tous ces conseils et idees.

Romain.

Contribution le : 17/02/2005 10:08
Créer un fichier PDF de la contribution Imprimer


Re: [API] SendMessage et attente de la reponse

Inscrit:
19/11/2002 12:20
Post(s): 390
Citation :

drcharly93 a écrit :
Bonjour,

Les Sockets UDP sont une évolution de la version 9 de WinDev et malheureusement pas dispo a ma connaissance avec la version 8.



Euh, c'est bien ce que je dis, Windev ne gère pas les sockets UDP, ni dans la version 8, ni dans la 9 d'ailleurs...

Edit de lmame:
Autant pour moi, je viens de voir dans l'aide de la dernière version de Windev 9 que l'on pouvait faire des socket UDP...

Contribution le : 18/02/2005 17:53
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant




Enregistrer votre réponse
CompteNom   Mot de passe   Authentification
Message:


Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2