bouv
Messages postés1411Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention 3 mars 2019
-
18 sept. 2006 à 09:16
bouv
Messages postés1411Date d'inscriptionmercredi 6 août 2003StatutMembreDerniè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.
olixelle
Messages postés506Date d'inscriptionvendredi 30 juillet 2004StatutMembreDernière intervention 3 mars 20082 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...
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 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 #
bouv
Messages postés1411Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention 3 mars 20191 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.
olixelle
Messages postés506Date d'inscriptionvendredi 30 juillet 2004StatutMembreDernière intervention 3 mars 20082 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....
bouv
Messages postés1411Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention 3 mars 20191 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 ?
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...
bouv
Messages postés1411Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention 3 mars 20191 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.
draluorg
Messages postés625Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention25 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...
bouv
Messages postés1411Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention 3 mars 20191 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
bouv
Messages postés1411Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention 3 mars 20191 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.