Rayn3d
Messages postés6Date d'inscriptionjeudi 17 avril 2008StatutMembreDernière intervention30 décembre 2009
-
20 avril 2008 à 11:52
cs_juju12
Messages postés966Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 4 mars 2010
-
20 avril 2008 à 20:08
bonjour a tous je voudrais créer deux consoles qui pourraient communiquer emsemble. Mais je ne sais par ou m'y prendre pouvez vos m'aidez ?
SVP (bien sur)
@+
Rayn3d
Messages postés6Date d'inscriptionjeudi 17 avril 2008StatutMembreDernière intervention30 décembre 2009 20 avril 2008 à 16:36
merci pour tes réponses. J'ai a peu prés saisi le principe theorique mais je ne sais pas comment m'y prendre pour que la premiere fenetre créer la deuxieme ?
glipper
Messages postés246Date d'inscriptiondimanche 2 juin 2002StatutMembreDernière intervention11 septembre 20161 20 avril 2008 à 12:12
Bonjour,
Je ne m'y connais pas beaucoup sur le sujet, mais voila quelques mots clés :
les threads : permet de créer un processus léger. Tu peux alors faire en sorte que ta première console crée la seconde
la fonction sendmessage() : tu peux t'en servir je crois pour faire communiquer deux applications entre elles
Puis sinon, je te poste plus bas quelques truc qui peuvent t'aider. regarde surtout le premier lien, on donne la liste des fonctions utiles pour faire communiquer deux processus.
Voila, je ne peux pas vraiment t'en dire plus, je ne m'y connais pas assez
Bon courage
Glipper
----------------------------------------------------------------------
"Tu peux effectivement utiliser SendMessage pour communiquer entre deux
HWND de processus différents. Pour envoyer des données (plus de 8
octets), il faudra que tu ait une zone de mémoire partagée entre les
deux processus, ou bien utiliser le message WM_COPYDATA"
http://www.cppfrance.com/infomsg_SENDMESSAGE_875748.aspx ----------------------------------------------------------------------
Un process c'est un ensemble file d'éxécution + mémoire.
C'est à dire que 2 process sont faiblement couplés. Ils ont chacun
leur espace mémoire à eux. Pour les coupler il faut utiliser des
mécanismes spécifiques.
Les threads d'un process ne sont que des files d"éxécution,
Ils se partagent l'espace mémoire du processus. Comme ins sont
concurrents il faut utiliser des mécanismes (les mutex par exemple, ou
les sections critiques) pour garantir la cohérence des objets en
mémoire.
On dit que les threads sont plus légers que les process car
le passage de l'un à l'autre n'implique pas un changement de contexte
important puisque la mémoire est partagée (pour 2 threads d'un même
process).
http://forum.hardware.fr/hfr/Programmation/definition-thread-process-sujet_4734_1.htm ----------------------------------------------------------------------
glipper
Messages postés246Date d'inscriptiondimanche 2 juin 2002StatutMembreDernière intervention11 septembre 20161 20 avril 2008 à 12:14
Bon je copie quand meme la liste ici, car dans quelques années le lien sera surement mort...
Glipper
Salut,
Voici en gros les fonctions à utiliser:
Le premier processus utilise:
CreateFileMapping() pour créer la mémoire partagée. Le dernier paramètre donne un nom à ce mapping object.
MapViewOfFile() pour mapper cette zone dans l'espace mémoire du processus. Cette fonction renvoie un pointeur sur la zone partagée.
CopyMemory() pour lire ou écrire dans cette zone.
UnmapViewOfFile() pour dégager la zone de l'espace mémoire du processus.
CloseHandle() pour fermer le handle retourné par CreateFileMapping().
Le deuxième processus utilise:
OpenFileMapping() pour ouvrir l'objet mémoire partagée créé dans le 1er processus. Le dernier paramètre indique le nom du mapping object.
MapViewOfFile() comme pour le 1er processus.
CopyMemory() comme pour le 1er processus.
UnmapViewOfFile() comme pour le 1er processus.
CloseHandle() pour fermer le handle retourné par OpenFileMapping().
cs_juju12
Messages postés966Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 4 mars 20104 20 avril 2008 à 20:08
Mais ta deuxième fenêtre, elle fait partie d'une autre instance du processus non? Parce que de toutes façons tu ne peux avoir qu'une seule console par processus, peu importe le nombre de threads associés.
Si tu veux démarrer un deuxième processus depuis le premier, CreateProcess().