SharpMao
Messages postés1024Date d'inscriptionmardi 4 février 2003StatutMembreDernière intervention 7 juin 201069 7 juil. 2005 à 09:49
Hello,
Tu peux le vérifier en regardant la liste des Process, avec la méthode Process.GetProcessesByName par exemple.
Le seul petit problème, si tu es en terminal-serveur, ou si tu veux vérifier les process sur une machine distante, çq ne fonctionne pas avec le Framework 1.1. (Bug connu).
Ca devrait aller mieux avec le 2.0, mais je n'ai pas encore eu le temps de vérifier.
Miiitch
Messages postés52Date d'inscriptionjeudi 28 octobre 2004StatutMembreDernière intervention24 août 20051 7 juil. 2005 à 09:57
autre methode possible avec un mutex nommé : tu essayes d'ouvrir un
mutex nommé, si il n'existe pas tu le crées et tu lance ton appli.
sinon c'est que ton appli est déja lancée.
Miiitch
Vous n’avez pas trouvé la réponse que vous recherchez ?
Miiitch
Messages postés52Date d'inscriptionjeudi 28 octobre 2004StatutMembreDernière intervention24 août 20051 7 juil. 2005 à 10:14
un truc important aussi, c'est qu'avec windows XP, il peut y avoir
plusieurs utilisateurs qui utilise ton application en meme temps, ca
serait bete de ne pas pouvoir l'ouvrir si elle est déja utilisée mais
par un autre utilisateur
fred65200
Messages postés100Date d'inscriptionlundi 21 février 2005StatutMembreDernière intervention18 février 2009 7 juil. 2005 à 13:02
Bon j'en suis là et ça marche. Si l'appli est ouverte je la met au premier plan.
private const int SW_MINIMIZE = 6;
private const int SW_RESTORE = 9;
//Je me suis battu pour savoir quelles constantes il fallait utiliser
//suivant que l'appli est derrière une fenêtre ou dans la barre des tâche
private void button1_Click(object sender, EventArgs e)
{
Process[] RunningProcesses = rocess.GetProcessesByName("MonAppli");
//MonAppli est le nom de l'exe sans .exe
if (RunningProcesses.Length != 1)
{
Process.Start(@"Chemin complet de l'appli");
}
else
{
ShowWindowAsync(RunningProcesses[0].MainWindowHandle,SW_SHOWMINIMIZED);
ShowWindowAsync(RunningProcesses[0].MainWindowHandle, SW_RESTORE);
}
}
[DllImport("User32.dll")]
public static extern int ShowWindowAsync(IntPtr hWnd, int nCmdShow);
merci à vous trois. Le Mutex pour moi c'est pour plus tard.
N'hésitez pas à poster des commentaires pour amélioration.
PS je vais ajouter ce bout de code aux commentaire du lien de MX.