FAIRE COMMUNIQUER PLUSIEURS PROGRAMMES ENTRE EUX EN TEMPS REEL LE PLUS FACILEMEN

cs_Alain Proviste Messages postés 908 Date d'inscription jeudi 26 juillet 2001 Statut Modérateur Dernière intervention 1 février 2015 - 18 janv. 2005 à 23:44
cs_Alain Proviste Messages postés 908 Date d'inscription jeudi 26 juillet 2001 Statut Modérateur Dernière intervention 1 février 2015 - 24 sept. 2006 à 02:45
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/28936-faire-communiquer-plusieurs-programmes-entre-eux-en-temps-reel-le-plus-facilement-du-monde

cs_Alain Proviste Messages postés 908 Date d'inscription jeudi 26 juillet 2001 Statut Modérateur Dernière intervention 1 février 2015 2
24 sept. 2006 à 02:45
non car comme dans 50% des sources, les commentaires en apprennent plus que la source elles mêmes, c'est pourquoi j'ai ricané sur ton commentaire, mais je l'ai laissé ainsi que la source, parce que ça apporte de la pertinence au sujet.
cs_Melnofil Messages postés 71 Date d'inscription dimanche 23 juin 2002 Statut Membre Dernière intervention 1 février 2008
24 sept. 2006 à 00:12
top3 dans une recherche sur google ==> je considère que je peux commenter ;)

La supprimer me parait approprié

++
draluorg Messages postés 625 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 25 novembre 2010
22 sept. 2006 à 20:41
Salut a tous,

Erf wai c'est vrai que ca date, et d'ailleur je ferais bien de demander qu'on la supprime...

Si un modo passe par la avant...

++
cs_Alain Proviste Messages postés 908 Date d'inscription jeudi 26 juillet 2001 Statut Modérateur Dernière intervention 1 février 2015 2
22 sept. 2006 à 20:26
un an et huit mois après la guerre, mais commentaire bienvenue tout de même :)
cs_Melnofil Messages postés 71 Date d'inscription dimanche 23 juin 2002 Statut Membre Dernière intervention 1 février 2008
22 sept. 2006 à 17:01
Comme l'a presque dit BruNews, la mémoire partagée est une zone qui peut être lue par plusieurs processus, c'est ce qu'il y a de plus rapide pour communiquer entre deux processus mais ca pose pas mal de problèmes de verrous. Par réflexe voici les liens wikipédia pour débuter/comprendre de quoi je parle :
http://fr.wikipedia.org/w/index.php?title=Verrou_%28informatique%29
http://fr.wikipedia.org/wiki/S%C3%A9maphore_%28informatique%29

draluorg :
TON code est peut-être sûr mais tu as pensé aux codes de ceux qui vont tenter de t'imiter ? Il y a des débutants sur ce site qui peuvent faire une erreur dans leur programme (par exemple dans le nom d'une clé) et effacer par mégarde un truc vital à windows. Si on dit de ne pas utiliser la base de registre ce n'est pas pour restreindre les possibilitées de programmation des débutants, c'est juste qu'on pense que les débutants veulent garder leurs ordis intacts durant l'apprentissage.
La base de registre sert surtout de base de donnée à windows, mais aussi à enregistrer des données partagée entre tous les utilisateurs d'un même ordinateur, ou encore à laisser une trace d'un programme désinstallé pour récuperer des infos de config ou autres à la prochaine réinstallation (style shareware à utilisation limité). J'en oubli peut-être mais en tout cas ca ne sert sûrement pas à faire communiquer des processus (hors Windows lui-même bien sûr).

Pym Corp :
"l'utilisation abusive" (ca suffit)

crossblade :
Un accès disque toutes les X secondes ce n'est pas une bonne idée, au minimum utilise la mémoire partagée avec un flag qui indique si le dossier a changé.

Si vraiment vous ne voulez pas utiliser la mémoire partagé il faut utiliser des sockets locaux, les messages/signaux (windows), les pipes/tubes (linux, bien que je doute fort que quelqu'un programme en VB sous linux un jour :-p), etc. Réflexe à nouveau :
http://fr.wikipedia.org/wiki/Communication_inter-processus

Bon courage
42wawa42 Messages postés 143 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 6 septembre 2011
24 janv. 2005 à 16:41
Je trouve le petit programme bien mais mais mais ?.
Comme tous les commentaires déjà donnes au programme enfoncer le clou plus profond NON.
Il est vrai que le problème de transfère n'est pas des plus simples a résoudre.
Personnellement j'ai un programme N1 qui enregistre des données d'un Port COM qui sont changées en temps REEL . Qui marche très bien.
De l'autre cote un autre programme N2 utilise les données de P N1 pour les mettre dans les différentes
TextBox .
Mais je n'ai toujours pas trouvé de solutions (source ) pour produire la fonction "LinkItem ,LinkMode,
LinkTopic" dans VB4.0 a VB6.0. les Exemples de MS sont toujours pour P N2 a partir de Excel, je cherche un exemple pour P N1.
Merci pour une réponse
cs_Nocturne Messages postés 115 Date d'inscription mardi 26 février 2002 Statut Membre Dernière intervention 15 novembre 2007
19 janv. 2005 à 20:51
re - draluorg,
J'ai jamais dit que ton code endomage la Bdr, j'ai simplement souligné que d'utiliser la Bdr de cette facon pouvait engendrer un endomagement de la Bdr.

Pour revenir a ton code, il fonctionne très bien, mais je pense que c'est pas un très bon exemple pour les débutants en VB de faire de la programmation de cette facon. Il est préférable que les débutants utilisent un fichier text ou autre chose...

Pour repondre a ta question, "creer une zone de memoire "public" qui serait accessible a plusieurs processus pour échanger des variables".

Je ne pense pas que c'est possible.
Dans ce contexte est d'utiliser les messages windows.
Avec les messages windows, tu peux envoyer des messages string, numérique et autres...
Après il te reste plus qu'a faire passer ces messages dans une procedure "capture message windows", avec un filtre qui te permetras de récupérer uniquement les infos qui te concernne.

Si tu a plusieurs applications qui doivent dialoguer ensemble, et bien sur chacune d'entre elle tu mets une procédure analogue de capture avec ces filtres.

Ce qu'il faut comprendre par messages windows, c'est un échange permanent de messages divers entre le système d'exploitation et les processus actifs (applications en cours d'execution). Cela s'appelle la boucle de messages (Message Loop).

Je t'invite a faire un tour sur le site : http://alphomega.developpez.com/EchangeVal/
Jean-Luc Mellet (Alphomega) explique très bien cette gestion de messages.

Bonne chance
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
19 janv. 2005 à 19:32
J'ai donne le lien plus haut du Richter, il explique tout cela en detail avec exemples. Toute personne s'interessant a la prog serieuse sur Windows doit avoir lu Richter, c'est la reference en la matiere, il est entre autre l'auteur de quelques modules de Windows.
draluorg Messages postés 625 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 25 novembre 2010
19 janv. 2005 à 19:22
merci BruNews mais je ne trouve rien sur le FileMapping

pourrais tu m'en dire un peu plus stp ?
merci @+
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
19 janv. 2005 à 18:12
FileMapping est le plus simple pour faire une zone de memoire partagee.
draluorg Messages postés 625 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 25 novembre 2010
19 janv. 2005 à 18:06
oui biensure ca je sais mais je ne vois pas comment mon code pourrait endomager la bdr
Pour moi le seul moyen de l'endomager serait de supprimer ou remplacer une mauvaise cle mais a partir du moment ou on ne travail que sous une cle que l'on a cree et ses sous cles on ne touche pas aux cles qui seront interpretees par windows.

Sinon je vais quand meme me pencher sur ton code Nocture car c'est clairement plus elegant mais je n'avais pas le temps de familliariser avec ton code lorsque j'avais besoin de cette fonction, en tout cas felicitation :)

sinon encore un truc Nocturne, est il possible de creer une zone de memoire "public" qui serait acessible a plusieurs processus ? L'idee ne serait pas de s'emvoyer des messages mais d'echanger des variables, pense tu que c'est possible ?
cs_Nocturne Messages postés 115 Date d'inscription mardi 26 février 2002 Statut Membre Dernière intervention 15 novembre 2007
19 janv. 2005 à 16:51
Pym Corp vient de donner la reponse.
On n'utilise pas une Bdr comme une base de donnée...

La Bdr constitue le coeur de Windows, elle centralise tous les paramètres de configuration. La gestion / pilotage des périphériques (processeur, BIOS, cartes PCI), gestion des logiciels, gestion des différents profils ...
Les informations nécessaires sont alors stockées dans une structure particulière, le Registre.
Ce registre est en fait constitué de deux fichiers qui se trouvent dans votre répertoire Windows : USER.DAT et SYSTEM.DAT.
Ces fichiers sont construits à chaque démarrage par Windows.

Si votre Bdr est endomagé, Windows risque de ne plus fonctionner correctement voir même ne plus démarrer.

A+
crossblade Messages postés 113 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 3 février 2007
19 janv. 2005 à 15:37
Même si par les api c'est plus pratique mais faut savoir les gérer; si tu veux faire encore plus simple, crée un dossier temporaire pour l'application et demande à un timer de vérifier le dossier toutes les X secondes! et tu met dans le dossier n'importe quoi ( par exemple un fichier text dans lequel le dialogue est écrit ou bien des images)
Pym Corp Messages postés 166 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 18 novembre 2007
19 janv. 2005 à 15:27
Je trouve que l'utilisation abusative de la base de registre est une très mauvaise chose et doit être réservé aux taches importantes.

Tu ferais mieu de suivre les conseils de Nocturne.
draluorg Messages postés 625 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 25 novembre 2010
19 janv. 2005 à 15:07
eh wai, pour les api's il est vrai que je ne les maitrises pas encore tous, mais je sais quand meme les utiliser.
d'ailleur je conseil a ceux qui voudront utiliser cette methode d'utiliser les api pour la bdr ca rendra l'utilisation plus aisee et permetra des echanges plus complexe

sinon il est clair avec le code que tu as fais tu ne vas pas utiliser le mien lol , mais tout ce que tu as cite (recuperer le contenu d'une textbox ect..) est tout a fait faisable et relativement facile avec ma methode.

sinon tu parles de risques de l'endomager qu'entends tu par la ? La bdr est en partie faite pour ca non ?

Enfin bon,meme si ma source n'a pas l'air de convaincre je vais quand meme voir pour la mettre a jour en utilisant les api pour la bdr

merci pour vos commentaires @+
cs_Nocturne Messages postés 115 Date d'inscription mardi 26 février 2002 Statut Membre Dernière intervention 15 novembre 2007
19 janv. 2005 à 13:50
C est vrai que tu ne peux pas lire et ecrire un fichier text en même temps, mais rien ne t'empeche de faire une lecture du fichier text pour récupérer les infos, puis après faire une ecriture pour mettre a jours les infos.

En terme de temps je pense a qq chose prêt que c'est la même chose que sur la Bdr mais utilise les APIs, stp.

Mais bon je pense que c'est pas une bonne chose de passer par la Bdr car tu prends un très gros risque de l'endomager.

Enfin bref, personnellement je n'utiliserais jamais ta methode, je préfere passer par les messages windows.

Tu devrais t'y mettre et apprends a utiliser les APIs.
En utilisant les APIs tu entres dans une autre dimension et t'offre d'autres possibilités.

Un developpeur qui ne sait pas utiliser les APIs, n'est pas un developpeur...

En reponse a Morpho,
Dans l'exemple que j'ai donné, échange de message windows entre deux applications.
http://www.vbfrance.com/code.aspx?ID=22686
tu peux très bien également récupérer d'autres types d'information, comme récupérer le contenu d'une liste box, la couleur d'un bouton, etc... pour cela il faudra modifier la source.

Regarde sur ce site : http://alphomega.developpez.com/EchangeVal/
il y a une explication pour envoyer une structure si c'est cela que tu recherches. C'est en Delphi.

Bonne prog.
draluorg Messages postés 625 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 25 novembre 2010
19 janv. 2005 à 11:10
salut a tous,

" tu pourrais également le faire via un fichier text."

Yep ms ca ralentirait l'echange je pense, et puis je me trompe peut etre mais a ma connaissance on ne peut pas lire et ecrire en meme temps ds le meme fichier texte si?

sinon pour Morpho, qu'entends tu par collection ?
Le but du code n'est pas d'envoyer des "messages" mais d'echanger des informations de toutes sortes...
cs_Morpho Messages postés 18 Date d'inscription vendredi 27 septembre 2002 Statut Membre Dernière intervention 5 décembre 2006
19 janv. 2005 à 10:23
lut a tous
Je cherche un exemple de communication interprocessus comme celui-ci mais non pas pour echange un message mais une collection.
Quelqu'un pourrait-il me mettre sur une piste ??
Merci
cs_Nocturne Messages postés 115 Date d'inscription mardi 26 février 2002 Statut Membre Dernière intervention 15 novembre 2007
19 janv. 2005 à 02:47
En effet ca reste très simple comme methode, tu pourrais également le faire via un fichier text.
C'est pas non plus du temps réel vu que exploite un timer pour le declenchement de lecture de la Bdr.

Mais bon c'est pas de la communication interprocessus.

Regarde une de mes source, échange de message windows entre deux applications.
http://www.vbfrance.com/code.aspx?ID=22686

c'est une source qui je pense reste facile a comprendre et qui est court.
De plus elle se rapproche plus de l'execution en temps réel vu que j'exploite directement les messages.

Bonne continuation.
draluorg Messages postés 625 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 25 novembre 2010
19 janv. 2005 à 00:20
Yep mais comme tu dis si bien c'est pour la communication interprocessus, ce qui n'est pas le cas ici c'est une simple communication indirect via la bdr ms l'avantage est la simplicite
je savais que j'allais me prendre ce genre de comentaires dans les dents mais il y a des debutants sur ce site dont moi qui n'ont pas forcement envie de se prendre la tete avec les handle ect.. pour un resultat identique...
mais bon je suis d'acord avec vos commentaires mais l'aynant code pour moi je me suis dis que ca interesserait surement d'autres
voila bonne prog a vous @+
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
19 janv. 2005 à 00:02
Comme dit plus, ne jamais faire cela.
Windows propose tout ce qu'il faut pour la comm interprocessus:
Event, Semaphore, FileMapping, etc...
Explications completes dans le Richter:
http://brunews.free.fr/brunews/download/JR4.zip
http://brunews.free.fr/brunews/download/JR4Sources.zip
cs_Alain Proviste Messages postés 908 Date d'inscription jeudi 26 juillet 2001 Statut Modérateur Dernière intervention 1 février 2015 2
18 janv. 2005 à 23:44
oh mon dieu oh mon dieu, préservez nous de ça.
j'avoue que c'est imaginatif, mais bon.
les timers : c'est mal
la base de registre : c'est mal
bonne chance.
Rejoignez-nous