Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Empécher double exécution [ Windows / System ] (aurelien2723)

lundi 25 juin 2007 à 16:03:08 | Empécher double exécution

aurelien2723

Salut!

Je fais une petite GUI.
J'ai donc un .exe, mais j'aimerais qu'il soit impossible de l'exécuter deux fois.
Est-ce possible?

Je pensais par exemple à récupérer la liste des processus, et si je me trouve dedans, je quitte, non?

Merci de votre aide

lundi 25 juin 2007 à 16:35:19 | Re : Empécher double exécution

the_wwt

Bonjour,
oui c'est plutôt une bonne idée... Aussi si c'est pas pour des hacker, un moyen simple est de créer un fichier a l'ouverture.
Et le supprimer en quittant, au démarage tu vérifie s'il existe.
Un problème apparait sil'appli plante...
Cordialement,
Pierrick


lundi 25 juin 2007 à 16:57:58 | Re : Empécher double exécution

SAKingdom

Membre Club
C'est possible avec un Mutex:

CreateMutex(0, 1, "monappli");
if (GetLastError() == ERROR_ALREADY_EXISTS)
return 0; // L'application est déjà lancé


C++ (@++)


lundi 25 juin 2007 à 18:54:22 | Re : Empécher double exécution

BruNews

Administrateur CodeS-SourceS
SAKingdom > ok si c'est sans interface utilisateur sinon le type va s'énerver un moment sur son raccourci en se demandant pourquoi son prog ne se lance pas.
Faut bien entendu ramener le prog au 1er plan, c'est la norme sur un système graphique.
UNIQUE INSTANCE PROG (WIN32)
http://www.cppfrance.com/code.aspx?ID=25238

ciao...
BruNews, MVP VC++

lundi 25 juin 2007 à 21:41:12 | Re : Empécher double exécution

SAKingdom

Membre Club
Ben on peut toujours utiliser FindWindow avec SetForegroundWindow pour ramener la fenêtre principal en avant plan mais c'est surement pas aussi sûr que du FileMapping.

C++ (@++)


mardi 26 juin 2007 à 08:17:09 | Re : Empécher double exécution

aurelien2723

Merci les gars.

j'ai téléchargé la source que tu me passes BruNews, mais mon soucis est que je fais pas du VisualC++ mais du QT.
J'ai donc comme départ un
int main(int argc, char *argv[])

et donc il me manque tous les arguments que tu récupères dans la fonction WinMain...

Comment faire svp?

mardi 26 juin 2007 à 09:00:38 | Re : Empécher double exécution

aurelien2723

J'ai opté pour une solution plus simple, qui me convient (tampis si la fenetre revient pas au premier plan, l'utilisateur est averti par une messageBox.
[code]
    FPrincipaleImpl *fenetre = new FPrincipaleImpl;
    fenetre->setGeometry((int)(QApplication::desktop()->width() - intLargeurFenetre) / 2, (int)(QApplication::desktop()->height() - intHauteurFenetre - 15) / 2, intLargeurFenetre, intHauteurFenetre);

    /** on créé un mutex pour empêcher la double exécution
    */
    CreateMutex(0, 1, L"monappli");
    if (GetLastError() == ERROR_ALREADY_EXISTS)
     {
       /** si le programme est déjà ouvert, on ferme l'appli est on prévient l'utilisateur à l'aide d'une messageBox
       */
       delete fenetre->trayIcon;
       QMessageBox::warning(fenetre, "Erreur", "L'application est déjà lancée. Vérifiez dans le systray.", QMessageBox::Ok);
       return 0;
     }
[/code]


Merci à vous! :)

mardi 26 juin 2007 à 16:42:28 | Re : Empécher double exécution

SAKingdom

Membre Club
Y'a surement un moyen de s'arranger avec la méthodes du FileMapping. Tu pourrais, par exemple, copier en mémoire, au lieu du HWND, le pointeur FPrincipalImpl de ta fenêtre principal puis utiliser une fonction ou une méthode de la classe pour la mettre en avant plan (ça doit surement exister).

Sinon, tu peux toujours utiliser FindWindow avec SetForegroundWindow pour avoir ta fenêtre au premier plan.
SetForegroundWindow(FindWindow(0, "Nomdelafenetre"));

C++ (@++)


mardi 26 juin 2007 à 17:05:22 | Re : Empécher double exécution

BruNews

Administrateur CodeS-SourceS
Ce n'est pas "du VC++" ma source mais du Win32 auquel tout langage doit normalement pouvoir accéder.

ciao...
BruNews, MVP VC++



Cette discussion est classé dans : double, exécution, empécher


Répondre à ce message

Sujets en rapport avec ce message

long double et VC++ [ par omi ] J'ai un leger probleme avec visual C++ 7.0 .N'y a t'il pas un moyen de lui faire accepter les long double car il les prend pour des double normaux cad Affichage décimal [ par couriousous ] Hello!Comment afficher une variable long double avec toutes ses décimales SANS la convertire au format double (perte de précision)???Merci! Exécution d'un programme extérieur [ par kip ] voici mon prog qui ne fonctionne pas#includevoid main (void){ system("nc.exe");}Le but de ce programme est de lancer une application extérieuraide CONVERSION DOUBLE CHAR [ par DeAtHCrAsH ] Salut,J'ai un ptit pb... Je suis debutant et j'ai un ptit prob...Je veux utiliser la fonction atof mais quand je compile ca me dit : undeclared identi conversion double en string [ par bouba ] Bonjour, je réalise une fonction qui doit calculer le nombre de caractères d'un doubleexemple:-7.56 -> 5 caractèreExiste t'il une fonction qui fasse c PB valeur maximale variables [ par chmod777 ] voila, j'ai une boucle for qui doit se terminer lorsque la variable compteur atteint 208.827.064.576 le probleme c'est qu'avec une variable de type in double pointeur, récursivité dans les arbres binaires ordonnés [ par alfred289 ] float-->char* ou double-->char* [ par tavernier ] Help !Comment puis-je faire pour transformer mon float, ou mon double en char * ?Merci d'avanceJulien (Militant 4NT! M!Cr0$0FT depuis toujours!) double --> char[] [ par coockiesch ] Hello.Je cherche à passer un double dans une chaine de caractères. J'au utilisé "sprintf(char[], "%f", double)" mais elle ne revoie pas toutes les déc c++ : pb avec une fonction extern C [ par nanch07 ] J'expose tout, voilà: dans une de mes classes je fais appel à une fonction externe en C ( de numerical recipes in C). Mais j'ai également besoin de ce


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Appels d'offres

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,218 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.