cs_Alain Proviste
Messages postés908Date d'inscriptionjeudi 26 juillet 2001StatutModérateurDernière intervention 1 février 20152 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és71Date d'inscriptiondimanche 23 juin 2002StatutMembreDerniè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és625Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention25 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és908Date d'inscriptionjeudi 26 juillet 2001StatutModérateurDernière intervention 1 février 20152 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és71Date d'inscriptiondimanche 23 juin 2002StatutMembreDernière intervention 1 février 2008 22 sept. 2006 à 17:01
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és143Date d'inscriptiondimanche 28 septembre 2003StatutMembreDerniè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és115Date d'inscriptionmardi 26 février 2002StatutMembreDernière intervention15 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).
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 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és625Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention25 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és21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 19 janv. 2005 à 18:12
FileMapping est le plus simple pour faire une zone de memoire partagee.
draluorg
Messages postés625Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention25 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és115Date d'inscriptionmardi 26 février 2002StatutMembreDernière intervention15 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és113Date d'inscriptiondimanche 14 avril 2002StatutMembreDerniè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és166Date d'inscriptionjeudi 9 décembre 2004StatutMembreDernière intervention18 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és625Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention25 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és115Date d'inscriptionmardi 26 février 2002StatutMembreDernière intervention15 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.
draluorg
Messages postés625Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention25 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és18Date d'inscriptionvendredi 27 septembre 2002StatutMembreDerniè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és115Date d'inscriptionmardi 26 février 2002StatutMembreDernière intervention15 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.
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és625Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention25 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és21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 19 janv. 2005 à 00:02
cs_Alain Proviste
Messages postés908Date d'inscriptionjeudi 26 juillet 2001StatutModérateurDernière intervention 1 février 20152 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.
24 sept. 2006 à 02:45
24 sept. 2006 à 00:12
La supprimer me parait approprié
++
22 sept. 2006 à 20:41
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...
++
22 sept. 2006 à 20:26
22 sept. 2006 à 17:01
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
24 janv. 2005 à 16:41
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
19 janv. 2005 à 20:51
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
19 janv. 2005 à 19:32
19 janv. 2005 à 19:22
pourrais tu m'en dire un peu plus stp ?
merci @+
19 janv. 2005 à 18:12
19 janv. 2005 à 18:06
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 ?
19 janv. 2005 à 16:51
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+
19 janv. 2005 à 15:37
19 janv. 2005 à 15:27
Tu ferais mieu de suivre les conseils de Nocturne.
19 janv. 2005 à 15:07
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 @+
19 janv. 2005 à 13:50
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.
19 janv. 2005 à 11:10
" 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...
19 janv. 2005 à 10:23
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
19 janv. 2005 à 02:47
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.
19 janv. 2005 à 00:20
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 @+
19 janv. 2005 à 00:02
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
18 janv. 2005 à 23:44
j'avoue que c'est imaginatif, mais bon.
les timers : c'est mal
la base de registre : c'est mal
bonne chance.