COMMUNICATION ENTRE INSTANCES

Résolu
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 - 18 sept. 2006 à 09:16
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 - 19 sept. 2006 à 10:25
Salut,

Je suis à cours d'idée. J'aimerais savoir comment faire pour récupérer des informations en provenance d'une (éventuelle) autre instance de mon application en cours de fonctionnement.

En fait, au début du logiciel l'utilisateur de log avec son 'Nom' et son 'Mot de Passe'.
Si une deuxième instance de l'appli est lancée, je souhaite épargner à l'utilisateur la douloureuser tâche de resaisir ses codes de connexion.

Merci d'avance.

Bonne prog ++

17 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
19 sept. 2006 à 08:38
Et voilà David, avec ça, ca devrait aller ^^

http://www.vbfrance.com/code.aspx?ID=39615

Renfield
Admin CodeS-SourceS- MVP Visual Basic
3
olixelle Messages postés 506 Date d'inscription vendredi 30 juillet 2004 Statut Membre Dernière intervention 3 mars 2008 2
18 sept. 2006 à 09:24
salut,

en fait tu as plrs solutions.
Concernant la communication entre applications, tu peux utiliser les msg windows ou les named pipes.
Il y a aussi la possibilité de taper dans la base de registre mais ce n'est pas tres propre

Enfin, tu peux interdire de lancer 2 instances de ton programmes mais ce n'est peut etre pas ce que tu cherches a faire...

Rollerman
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
18 sept. 2006 à 09:30
A priori je ne vois qu'une seule solution, le fichier.
Un fichier au nom bien défini, à un amplcement bien défini, qui inclu toutes les variables que tu dois partager, et une variable qui compte le nombre d'instance en cours.

La première instance crée le fichier à l'ouverture, chaque nouvelle instance incrémente le nb d'instance à l'ouverture et le décremente à la fermeture. La dernière instance détruit le fichier (si évidenment tu ne souhaite pas garder les infos quand il n'y a plus d'instances en cours).
Regarde du coté des fichiers ini

Tu peux faire la même chose en utilisant la base de registre (sencée remplacer les fichiers ini, pretendus obsoletes par microsoft, mais toujours utilisés). Perso je préfere un bon fichier, à une manipulation de la bdr.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
18 sept. 2006 à 09:35
Fichier physique, ou Names pipe, comme le suggère olixelle...

bref... il n'y a pas qu'un moyen de t'en sortir.

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
18 sept. 2006 à 09:37
Merci de votre intérêt.

1°- Non je ne souhaite pas interdire le lancement de 2 instances. Renfield à d'ailleurs fait une très bonne source à ce sujet récemment.

2°- Au niveau de la BDR, j'y ai bien pensé (tout comme le .ini) mais comme dis Olixelle "ce n'est pas très propre". Surtout que s'y la première instance plante, elle n'effacera pas les données et on pourra ainsi lancer autant d'instance que l'on veut sans se relogger.

3°- En fait mon objectif est de récupérer les codes utilisés lors de la premiere connexion, afin que la seconde instance utilise les mêmes.

4°- Olixelle, peux tu m'en dire plus sur les messages Windows.

Bonne prog ++
0
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
18 sept. 2006 à 09:39
Renfield, tu m'as devancé ^^

Sinon qu'est ce que les Named Pipes.

Bonne prog ++
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
18 sept. 2006 à 09:54
en gros... des "fichiers virtuels" auxquels tu peux accéder en lecture/ecriture...

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
olixelle Messages postés 506 Date d'inscription vendredi 30 juillet 2004 Statut Membre Dernière intervention 3 mars 2008 2
18 sept. 2006 à 09:57
pour revenir sur les msgs windows apres reflexion ce n'est peut etre pas le mieux car tu serais obligé d'envoyer tes msg en broadcas ce qui n'est pas tres propre non plus....


Concernant les named pipes regarde ca: http://support.microsoft.com/?kbid=177696

Rollerman
0
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
18 sept. 2006 à 16:29
Merci pour l'info. J'ai regardé le lien mais je ne pige pas tout très bien.

Voici quelques questions :

- Un autre programme peut-il connaitre l'existance de mon 'Named Pipe' ? (quid de la sécurité)
- Si l'instance qui a créé le 'Named Pipe' plante, que devient ce dernier ? Il disparait ?
- Auriez-vous d'autres exemples, un peu plus simple ?

Merci
Bonne prog
++
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
18 sept. 2006 à 16:42
Ici n'est mentionné qu'un exemple des technos qu'il est possible de mettre en oeuvre, pour communiquer entre plusieurs process...

en voici d'autres :

- Fichiers
- Presse-papier
- WM_COPYDATA
- Sockets
- RPC
- Mailslots
- Pipes
- DDE
- Mappage mémoire

j'ignore finallement si le Pipe est une bonne solution ici. En effet, comme son nom l'indique, c'est juste un tuyau... et si personne n'est à l'autre bout, l'info est perdue. par definition, dans ton cas, tu n'as très probablement 'personne' à l'autre bout...

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
18 sept. 2006 à 17:04
Que me conseil tu dans ce cas ? Quelle serait la solution la plus adaptée selon toi ?

Je vais essayer de préciser un peu mieux mon projet :


Lorsqu'un utilisateur lance l'appli, on lui demande son Login et mot de passe pour se connecter à une base de données Access.
Il a cependant la possibilité de lancer une deuxième (ou +) instance (je tiens à garder cela).
Et je souhaite donc (comme dis plus haut) épargner à l'utilisateur déjà loggé de ressaisir son login et MDP. Mais pour le bon fonctionnement du logiciel (traçage de l'activité) j'ai besoins que ma deuxième instance connaisse quel login et MDP ont été utilisés.

Bonne prog ++
0
draluorg Messages postés 625 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 25 novembre 2010
18 sept. 2006 à 22:17
Salut,

Eh le plus simple serait de mettre une option sur le programme pour relancer une nouvelle instance, instance que tu lance avec le passe et le UserName en ligne de commande...

++

Quand on pose une question on est con 5 minutes,
Quand on ne la pose pas on le reste toute sa vie...
0
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
18 sept. 2006 à 23:47
Hum, l'idée n'est pas bête, mais malheureusement cela ne fonctionnera pas dans mon cas car il est lui même lancé par une autre programme.

Merci quand même pour l'idée.

Bonne prog ++
0
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
19 sept. 2006 à 08:59
Merci beaucoup, c'est génial !

Le seul problème est que si l'instance qui ajoute une info se termine sans la supprimer (ex : plantage) cette info persiste pour les futures instances...

J'ai donc ajouter un bout de code qui supprime toutes les valeurs au début du programme si  App.PrevInstance = False

Bonne prog
++
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
19 sept. 2006 à 09:51
pas testé si ca plante.... je l'avoue

je en mettrais pas App.PrevInstance.... vu que ca fonctionne entre plusieurs programmes (pas forcément plusieurs instances)

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
19 sept. 2006 à 09:54
.... je n'arrive pas a reproduire ce que tu décris...

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
19 sept. 2006 à 10:25
Compile ton projet et nomme le toto.exe, puis lance toto.exe 2 fois

Sur la premiere instance tu modifie la premiere textbox. Ecrit par exemple "Salut". Puis tu ferme cette fenetre.
Puis sur la fenetre qui reste tu clic sur lire ...

Je ne sais pour quelle raison, ceci ne se produit pas lorsque la deuxieme instance est lancée après la fermeture de la première.

Bonne prog ++
0
Rejoignez-nous