UNIQUE INSTANCE PROG (WIN32)

cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 - 7 août 2004 à 15:54
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 12 août 2005 à 18:23
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/25238-unique-instance-prog-win32

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
12 août 2005 à 18:23
Regarde GUIDGEN.EXE, il y a aussi un exemple en MFC dans MSDN.
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
12 août 2005 à 18:09
une utilisation du ps standard et d'un flag en zone partagé,
ça me semble pas mal....
et dc une routine qui commence à regarder si le flag est levé, et éventuellement envoi l'ordre à la premiere fenêtre de se montrer au premier plan avt de se fermer....
Il faut qu'elle ai une boucle de gestion de msg....

et dc mm si C po du windows
gogo petz

PS: mdr ta méth de copier collé BN.... mais c'est vrai que j'aV déjà remarqué ça...

PS': y a t'il une fonction dans le sabir API pour générer un GUID ?

Magicalement...
Nono.
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
14 sept. 2004 à 20:14
LOL, ben tt a fait le contraire...Serieusement, aucune idée, faudrait ke tu connaisses les api linux (posix) et le fonctionnement de l'os (ya ptet pas de Fichier d'echanges ? jpense pas, mais sait on jamais..).
9sber Messages postés 28 Date d'inscription vendredi 30 avril 2004 Statut Membre Dernière intervention 14 septembre 2004
14 sept. 2004 à 20:09
Tout cela c'est joli, mais sous linux, quelle solution adopter?
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
9 août 2004 à 16:33
Tu peux développer l'idée?
NitRic Messages postés 402 Date d'inscription mardi 1 mai 2001 Statut Membre Dernière intervention 15 août 2011
9 août 2004 à 16:29
Ce que plusieurs utilisent, le process id dans un simple fichier et de petites validations par la suite ...
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
9 août 2004 à 15:02
BruNews c'est un peu comme un ordinateur finalement
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
9 août 2004 à 15:00
Sur CS faut avoir un stock de reponses pretes a l'emploi, copier coller, et ça roule. On repete la meme chose tous les jours.
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
9 août 2004 à 14:52
J'ai déja vu ca quelque part...
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
9 août 2004 à 09:05
Le but du jeu est de ramener le prog au 1er plan, me semble etre le minimum quand l'utilisateur lance un prog. On ne fait pas cela avec un mutex.
DubbleM Messages postés 2 Date d'inscription dimanche 27 juillet 2003 Statut Membre Dernière intervention 8 septembre 2005
9 août 2004 à 08:39
Tu pouvais utiliser simplement les fonctions de l'API CreateMutex, OpenMutex et ReleaseMutex pour determiner si ton programme s'exécute dèjà...
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
8 août 2004 à 14:55
Allez, on va pas faire de la philo.
Si une tanche fait rentre un prog a la con sur son poste parce qu'il fait joujou au lieu de bosser, on le fout a la porte et le probleme est regle.
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
8 août 2004 à 14:51
ta remarque est fausse dans le cadre du développement d'un antivirus
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
8 août 2004 à 14:33
vecchio56, c'est le role des antivirus de traiter les petits malins, pas le tien en production.
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
8 août 2004 à 14:25
Ah d'accord, merci.
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
8 août 2004 à 14:24
AlexMAN> class dialog == "#32770", tout le temps, donc ca marche pas
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
8 août 2004 à 14:22
On crée un fenêtre transparente avec une classe spéciale dans le dialog.
De toute manière, j'ai l'impression que dans tous les cas, il y aura une 'faille'. Un petit malin peut toujours créer un autre programme qu'il lance au démarrage Windows pour empêcher que l'autre puisse être lancé
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
8 août 2004 à 14:21
Brunews, FindWindow utilise le nom de la classe pour trouver une fenetre, je pense que la classe, elle, ne change pas, donc ca marcherait pas la methode du FindWindow ?
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
8 août 2004 à 14:16
FindWindow sur dialog dont on change le titre a l'execution n'ira pas, voir autres cas possibles aussi.
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
8 août 2004 à 14:14
OK que nom doit etre unique, pas trop dur a trouver sinon tu le fais avec le generateur de GUID et la sera unique.
Possible aussi sur FindWindow.
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
8 août 2004 à 14:07
Oui donc si je comprends bien il écrit d'une part 4 octets pour hwnd, mais aussi szappname pour pouvoir retrouver ensuite.
Mais si on imagine deux programmes qui ont le même szappname (comme par hasard), dans ce cas on ne pourra pas les lancer en même temps alors qu'il n'ont rien a voir. Finalement cela revient a avoir un szappname 'unique', mais dans ce cas un nom de classe unique aussi et un simple FindWindow suffirait, non?
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
8 août 2004 à 13:59
Dans le fichier d'echange du systeme, on lui demande juste de nous reserver 4 octets, c'est libere tout seul a la fermeture du prog. Si coupure courant ou autre accident, on ne laisse aucune salete nulle part.
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
8 août 2004 à 13:49
J'ai un peu la fleme de tout lire dans la MSDN, peux tu me dire ou sont écrits les 4 octets du HWND?
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
8 août 2004 à 00:30
C'est vrai. D'ailleurs pas besoin de panne de courant, une terminaison anormale du programme suffit
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
8 août 2004 à 00:25
vecchio56> je repense a ton histoire de mettre la valeur dans la base de registres, c'est a bannir, imagine une panne de courant, la valeur reste dans le registre et le prog ne demarre jamais plus.
Pas d'accord ?
gagah1 Messages postés 509 Date d'inscription samedi 28 juin 2003 Statut Membre Dernière intervention 3 août 2010
7 août 2004 à 17:23
Il y en a qui sont rapides. le temps de lire et paffff! déjà la reponse ! merci.
gagah1 Messages postés 509 Date d'inscription samedi 28 juin 2003 Statut Membre Dernière intervention 3 août 2010
7 août 2004 à 17:20
Pour la question de premier plan, exemple dans une application j'ai une fenetre principale qui est déjà ouverte, et j'ouvre après une boite de dialogue, et quand je reviens sur l'ancienne fenetre sans fermer la boite de dialogue , celle là reste au premier plan. Normalement la fenetre principale est au premier plan.
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
7 août 2004 à 17:19
On pourrait aussi utiliser une valeur dans le registre
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
7 août 2004 à 17:15
la seconde methode utilise le fichier d'echange de windows en reservant 4 octets dedans, n'a donc pas besoin de creer un segment 'shared'.
#pragma est une directive pour le compilo.
gagah1 Messages postés 509 Date d'inscription samedi 28 juin 2003 Statut Membre Dernière intervention 3 août 2010
7 août 2004 à 17:10
C'est quoi une section "shared"?
En plus sur la deuxième methode ce pragma ... n'existe pas.
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
7 août 2004 à 17:09
gagah1> pas compris l'histoire de premier plan. Si tu as par exemple un selecteu de fichier ouvert et que tu relances le pro, pas de prob c'est bien le selecteur qui revient au 1er plan comme il se doit.
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
7 août 2004 à 17:02
pour les pragma, il l'a dit, ca lui permet de stocker des données ds une section "Shared" ( == Partagé).
gagah1 Messages postés 509 Date d'inscription samedi 28 juin 2003 Statut Membre Dernière intervention 3 août 2010
7 août 2004 à 16:57
Très interessante cette source.
Mais tu pourrais m'expliquer à quoi ça sert :
#pragma data_seg("shared")
et
#pragma data_seg()

J'en profite pour te demander comment faire pour qu'une deuxieme boite de dialogue reste au premier plan dans une application meme si le focus est sur la première. Merci!
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
7 août 2004 à 15:54
Je me demande vraiment d'ou tu sors tt ca, c'est vraiment bien, on en apprend tt les jours avec toi..
merci

++
Rejoignez-nous