begin process at 2012 05 27 21:10:51
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

API

 > UNIQUE INSTANCE PROG (WIN32)

UNIQUE INSTANCE PROG (WIN32)


 Information sur la source

Note :
10 / 10 - par 5 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :API Classé sous :unique, instance, seule, processus Niveau :Débutant Date de création :07/08/2004 Date de mise à jour :01/05/2006 23:57:56 Vu / téléchargé :9 281 / 730

Auteur : BruNews

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (34)
Ajouter un commentaire et/ou une note


 Description

2 projets dans le zip pour 2 methodes.
Les 2 methodes ramenent, si c'est le cas, l'ancienne instance au 1er plan.

1) Une dialog mets son hwnd dans une section 'shared', un grand classique. Ne va que si c'est le meme exe physique qui est relance.

2) Methode que je pense infaillible, exe peut etre duplique meme sur differents lecteurs, il n'y aura qu'1 instance du prog. Je me sers du FileMapping. Vous suffira d'inserer MapSysApp.cpp et h dans vos progs et d'appeler fonctions du h comme dans l'exemple.



 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   UnicAppC
  •   UnicDlg
    •   release
      • UnicDlg.exeTélécharger ce fichier [Réservé aux membres club]24 064 octets
    • resource.hTélécharger ce fichier [Réservé aux membres club]Voir ce fichier495 octets
    • UnicDlg.apsTélécharger ce fichier [Réservé aux membres club]33 128 octets
    • UnicDlg.cppTélécharger ce fichier [Réservé aux membres club]Voir ce fichier1 219 octets
    • UnicDlg.ncbTélécharger ce fichier [Réservé aux membres club]35 840 octets
    • UnicDlg.rcTélécharger ce fichier [Réservé aux membres club]Voir ce fichier2 157 octets
    • UnicDlg.slnTélécharger ce fichier [Réservé aux membres club]Voir ce fichier903 octets
    • UnicDlg.suoTélécharger ce fichier [Réservé aux membres club]8 192 octets
    • UnicDlg.vcprojTélécharger ce fichier [Réservé aux membres club]3 438 octets

Télécharger le zip


 Historique

26 octobre 2005 17:17:53 :
site
01 mai 2006 23:57:56 :
commentaire

 Sources du même auteur

Source avec Zip VIDER ELEMENTS DE CORBEILLE WINDOWS7 (WIN64)
Source avec Zip Source avec une capture FIND TEXT (WIN64)
Source avec Zip DELETE DIRECTORY (WIN64)
Source avec Zip ENUM DIRECTORY (WIN64)
Source avec Zip TEMPLATES C/C++ POUR VS 2010

 Sources de la même categorie

Source avec Zip WIN32 TLS LENT par dguilmain
Source avec Zip VIDER ELEMENTS DE CORBEILLE WINDOWS7 (WIN64) par BruNews
Source avec Zip Source avec une capture FIND TEXT (WIN64) par BruNews
Source avec Zip DELETE DIRECTORY (WIN64) par BruNews
Source avec Zip ENUM DIRECTORY (WIN64) par BruNews

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture [C++] CLASS REGISTER par Miwik
UNIX : LISTER LE NOMBRE DE PROCESSUS TOURNANT SUR LA MACHINE par jojo930
Source avec Zip Source avec une capture LISTE PROCESSUS V2 (WIN64) par BruNews
PROCESS DUMPER par lilxam7
Source avec Zip INJECTION DE DLL DANS UN PROCESSUS par lilxam7

Commentaires et avis

Commentaire de AlexMAN le 07/08/2004 15:54:03

Je me demande vraiment d'ou tu sors tt ca, c'est vraiment bien, on en apprend tt les jours avec toi..
merci

++

Commentaire de gagah1 le 07/08/2004 16:57:09

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!

Commentaire de AlexMAN le 07/08/2004 17:02:16

pour les pragma, il l'a dit, ca lui permet de stocker des données ds une section "Shared" ( == Partagé).

Commentaire de BruNews le 07/08/2004 17:09:31 administrateur CS

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.

Commentaire de gagah1 le 07/08/2004 17:10:18

C'est quoi une section "shared"?
En plus sur la deuxième methode ce pragma ... n'existe pas.

Commentaire de BruNews le 07/08/2004 17:15:38 administrateur CS

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.

Commentaire de vecchio56 le 07/08/2004 17:19:40 administrateur CS

On pourrait aussi utiliser une valeur dans le registre

Commentaire de gagah1 le 07/08/2004 17:20:52

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.

Commentaire de gagah1 le 07/08/2004 17:23:11

Il y en a qui sont rapides. le temps de lire et paffff! déjà la reponse ! merci.

Commentaire de BruNews le 08/08/2004 00:25:42 administrateur CS

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 ?

Commentaire de vecchio56 le 08/08/2004 00:30:50 administrateur CS

C'est vrai. D'ailleurs pas besoin de panne de courant, une terminaison anormale du programme suffit

Commentaire de vecchio56 le 08/08/2004 13:49:24 administrateur CS

J'ai un peu la fleme de tout lire dans la MSDN, peux tu me dire ou sont écrits les 4 octets du HWND?

Commentaire de BruNews le 08/08/2004 13:59:12 administrateur CS

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.

Commentaire de vecchio56 le 08/08/2004 14:07:43 administrateur CS

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?

Commentaire de BruNews le 08/08/2004 14:14:50 administrateur CS

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.

Commentaire de BruNews le 08/08/2004 14:16:46 administrateur CS

FindWindow sur dialog dont on change le titre a l'execution n'ira pas, voir autres cas possibles aussi.

Commentaire de AlexMAN le 08/08/2004 14:21:54

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 ?

Commentaire de vecchio56 le 08/08/2004 14:22:15 administrateur CS

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é

Commentaire de vecchio56 le 08/08/2004 14:24:13 administrateur CS

AlexMAN> class dialog == "#32770", tout le temps, donc ca marche pas

Commentaire de AlexMAN le 08/08/2004 14:25:50

Ah d'accord, merci.

Commentaire de BruNews le 08/08/2004 14:33:39 administrateur CS

vecchio56, c'est le role des antivirus de traiter les petits malins, pas le tien en production.

Commentaire de vecchio56 le 08/08/2004 14:51:53 administrateur CS

ta remarque est fausse dans le cadre du développement d'un antivirus

Commentaire de BruNews le 08/08/2004 14:55:32 administrateur CS

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.

Commentaire de DubbleM le 09/08/2004 08:39:10

Tu pouvais utiliser simplement les fonctions de l'API CreateMutex, OpenMutex et ReleaseMutex pour determiner si ton programme s'exécute dèjà...

Commentaire de BruNews le 09/08/2004 09:05:25 administrateur CS

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.

Commentaire de vecchio56 le 09/08/2004 14:52:59 administrateur CS

J'ai déja vu ca quelque part...

Commentaire de BruNews le 09/08/2004 15:00:24 administrateur CS

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.

Commentaire de vecchio56 le 09/08/2004 15:02:49 administrateur CS

BruNews c'est un peu comme un ordinateur finalement

Commentaire de NitRic le 09/08/2004 16:29:02

Ce que plusieurs utilisent, le process id dans un simple fichier et de petites validations par la suite ...


Commentaire de vecchio56 le 09/08/2004 16:33:34 administrateur CS

Tu peux développer l'idée?

Commentaire de 9sber le 14/09/2004 20:09:55

Tout cela c'est joli, mais sous linux, quelle solution adopter?

Commentaire de AlexMAN le 14/09/2004 20:14:25

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..).

Commentaire de magic_Nono le 12/08/2005 18:09:06

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.

Commentaire de BruNews le 12/08/2005 18:23:35 administrateur CS

Regarde GUIDGEN.EXE, il y a aussi un exemple en MFC dans MSDN.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

instance unique d'une application [ par gadafla ] J'aimerais qu'en ouvrant autant de documents que je veux, ils aillent tous s'ouvrir sur une seule instance de mon programme, qui lui est multi-fenetre Lancer une seule instance de mon .exe [ par Helau ] Voilà, tout est résumé dans le titre !Je voudrais pouvoir lancer qu'une seule fois mon .exe.Mais, je ne sais pas comment controler si m vérifier une seule instance en multi-utilisateur [ par lefatalprogrammeur ] salutvoilà mon problème :pour vérifier que mon application est lancé qu'une seule fois, j'utilise un simple mutex oula class de ma fenêtre.mais ça mar instance unique simple, tres simple svp [ par Sebopop2 ] Bonjour,je fais un petit prog perso dans la barre des taches qui fait un ou deux trucs et jevoudrais un moyen tres tres simple de ne lancer qu'une seu Instance unique [ par Ombitious_Developper ] Salut:Comment peut on faire pourque une application Windows ait une seule et une unique instance si on essaye de lancer d'autres instances de cette ap fork() et ressource partagée [ par iam_myst ] Bonjour, Je voudrais créer un programme ou je souhaite partager une ressource entre un processus père et un processus fils. j'ai ma ressource déclarée variable partagé entre processus [ par facilus ] Bonjour,j'ai fais un programme en c sous unix qui consiste a creer 3 fils (avec fork) , j'ai declaré 2 variables globales leur valeurs doivent etre le Attente de la fin d'un processus sous Unix [ par laetitiavincent ] Bonsoir tout le mondeVoilà je voudrais lancer un processus et attendre qu'il soit fini pour que le programme continue. Sous windows, ca ne me pose pas Accès à une instance [ par Mycado ] Salutations,J'ai mon main, et deux classes (classA et classB). Je crée une instance de classA nommée cal dans mon main.Mon problème est, que j'aimerai Message windows d'arret system aux processus ? [ par mfrai02 ] (C++ MFC visual 6)   Hello !j'aimerais savoir (s'il existe) quel message windows envoie aux processus lors d'un arrêt system. J'ai rien trouvé à ce s


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,624 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales