Accueil > Forum > > > > Empécher double exécution
Empécher double exécution
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
|
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
|
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=25238ciao... BruNews, MVP VC++
|
|
lundi 25 juin 2007 à 21:41:12 |
Re : Empécher double exécution

SAKingdom
|
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
|
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
|
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ée 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
Livres en rapport
|
Derniers Blogs
COMMENT MAPPER UNE VUE SQL SUR UNE COLLECTION DE COMPLEX TYPE?COMMENT MAPPER UNE VUE SQL SUR UNE COLLECTION DE COMPLEX TYPE? par Matthieu MEZIL
Avec EF, les vues doivent être mappées sur des entity types. Le problème c'est que les entity types doivent avoir une clé. Avec EF, nous avons les complex type qui n'ont pas de clé mais les vues ne peuvent pas être mappées dessus. Avec EF4, il est possibl...
Cliquez pour lire la suite de l'article par Matthieu MEZIL [WF4] UN BINDING ACTIVITY/ACTIVITYDESIGNER QUI PASSE MAL?[WF4] UN BINDING ACTIVITY/ACTIVITYDESIGNER QUI PASSE MAL? par JeremyJeanson
Certain d'entre vous on peut être vécu cette situation embarrassante après quelques temps passer avec WF4 : Au début avec mon " ActivityDesigner" , tout allait bien. Et puis un jour j'ai au des problèmes de " Binding" . Alors nous sommes allé sur le site ...
Cliquez pour lire la suite de l'article par JeremyJeanson MYTIC - SHAREPOINT 2010 : DéJà UN MYTHE MICROSOFT ?MYTIC - SHAREPOINT 2010 : DéJà UN MYTHE MICROSOFT ? par junarnoalg
La prochaine session de MyTIC aura lieu à Namur, le 23 mars prochain. Pendant presque une heure, nous parlerons de SharePoint 2010. Voici un aperçu du programme.
Accueil : 17h30 Début de la session : 18h00 - Les nouvelles int...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
|