COMMENT NE LANCER QU'UNE INSTANCE DE MON PROGRAMME...

Signaler
Messages postés
656
Date d'inscription
mercredi 22 août 2001
Statut
Membre
Dernière intervention
11 mars 2005
-
Messages postés
1098
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
22 octobre 2019
-
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/11548-comment-ne-lancer-qu-une-instance-de-mon-programme

Messages postés
1098
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
22 octobre 2019

Tiens ????
8<-------- de Elektordi le 17/12/2004 20:13:05
Et si le programme plante ?
-------->8
8<-------- de sergebre le 18/12/2004 12:22:20
tu utilises un gestionnaire d'erreur, le blabla habituel.
try-catch-finally par exemple, au niveau de la création du mutex et au niveau de Application.Run(....).

c'est pas les exemples qui manque sur le site...
-------->8

Les mutex ne sont pas gérer par Windows directement ??? Si l'appli plante le mutex est détruit par Win donc pas besoin de gestion d'erreur (perso je n'est jamais utilisé la class mutex donc à testé mais les APIs ci dessous fonctionne sur ce principe ;) )

Déclaration pour VB6 :
Crée un Mutex
Private Declare Function CreateMutex Lib "kernel32" Alias "CreateMutexA" (ByVal lpMutexAttributes As Long, ByVal bInitialOwner As Long, ByVal lpName As String) As Long

Ouvre un mutex si il existe (retourne 0 si il n'existe pas ;))
Private Declare Function OpenMutex Lib "kernel32" Alias "OpenMutexA" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal lpName As String) As Long

Voila bonne prog

:) amicalement :)
Messages postés
11
Date d'inscription
mercredi 4 février 2004
Statut
Membre
Dernière intervention
4 juin 2010

Principe du process : mauvais.
Pourquoi ne pourrais-je pas avoir plusieurs appli (différentes) ayant le même nom de process ?

Voici une solution qui semble bien :
http://www.csharpfr.com/codes/SEULE-INSTANCE-APPLICATION_36791.aspx
Utilise le principe de la classe mutex ...
Messages postés
46
Date d'inscription
mercredi 19 mai 2004
Statut
Membre
Dernière intervention
26 juillet 2007

exactement, moi je passe par les process,c'est beaucoup plus simple
#region Main
[STAThread]
static void Main()
{
try
{
Process proc = Process.GetCurrentProcess();
Process[] processes = Process.GetProcessesByName (proc.ProcessName);
if (processes.Length != 1)
return;
Application.Run(new From1());
}
catch()
}
{}
Messages postés
186
Date d'inscription
mardi 31 décembre 2002
Statut
Membre
Dernière intervention
21 janvier 2008

Je voulait dire que ce n'était pas la meuilleure solution car vérifier si un process du même nom tourne déjà est bcps plus fiable !
Afficher les 9 commentaires