Réactiver l'instance d'un programme déjà ouvert lorsque qu'on souhaite le réexéc
Picsonald
Messages postés23Date d'inscriptionlundi 30 décembre 2002StatutMembreDernière intervention 7 novembre 2020
-
3 mars 2011 à 11:55
cs_louis14
Messages postés793Date d'inscriptionmardi 8 juillet 2003StatutMembreDernière intervention10 février 2021
-
7 mars 2011 à 11:04
Salut à tous !
J'ai un programme dont l'exécution multi-instance sur une session donnée est interdite. C'est-à-dire que si deux utilisateurs sont connectés sur l'ordinateur, chacun d'eux a le droit d'ouvrir une seule instance du programme.
J'y suis parvenu en utilisant les Mutex. Concrètement, dans la méthode 'Main' de la classe 'Program.cs' (using System.Threading) :
Mutex _mutex = new Mutex(false, "Pcs" + Application.ProductName);
Boolean _tourneDéjà = !_mutex.WaitOne(0, true);
if (!_tourneDéjà)
{
// Ouverture de la fenêtre principale.
_mutex.ReleaseMutex();
}
else
{
MessageBox.Show("Ce programme est déjà en cours d'exécution.");
}
Une autre solution était possible en parcourant la liste des processus (using System.Diagnostics). Mais bon, c'était un peu lourdingue, car il me fallait également contrôler l'utilisateur (_process.ProcessStratInfo.UserName).
Mon objectif est maintenant de faire en sorte que, lorsque l'utilisateur tente d'exécuter mon application une seconde fois (c'est-à-dire qu'elle est déjà lancée) alors, non seulement elle ne se rouvre pas, mais en plus, elle met l'autre application au premier plan.
Finalement, le comportement serait le même que celui de Windows Live Messenger. S'il est déjà en cours d'exécution, il ne se rouvre pas : il ne fait que réafficher la fenêtre principale du programme.
Auriez-vous une idée pour que ceci fonctionne ? (je bosse en C#, Winform, VS2008) ?
Merci d'avance !
Pics'
A voir également:
Réactiver l'instance d'un programme déjà ouvert lorsque qu'on souhaite le réexéc
cs_louis14
Messages postés793Date d'inscriptionmardi 8 juillet 2003StatutMembreDernière intervention10 février 20218 7 mars 2011 à 11:04
Bonjour,
Voilà ce que j'ai utilisé comme code , à toi de l'adapter :
/// <summary>
/// Utility to create one instance of an application.
/// If Exist switch to running application
/// </summary>
public static class WpfSingleInstance
{
/// <summary>
/// Test if event exist and create it if not exist.
/// </summary>
///