Soyez le premier à donner votre avis sur cette source.
Snippet vu 23 849 fois - Téléchargée 25 fois
//****************** //En début de code //****************** using System.Diagnostics; //****************************************************** //Au chargement (Main() ou dans Form_Load() pour applic. Windows //****************************************************** //Obtient le processus en cours de l'application Process Proc_EnCours = Process.GetCurrentProcess(); //Collection des processus actuellement lancés Process[] Les_Proc = Process.GetProcesses(); //Pour chaque processus lancé foreach (Process Processus in Les_Proc) /*Il ne faut pas comparer par rapport à cette instance du programme mais une autre (grâce à l'ID)*/ if (Proc_EnCours.Id != Processus.Id) //Si les ID sont différents mais de même nom ==> 2 fois le même programme if (Proc_EnCours.ProcessName == Processus.ProcessName) { MessageBox.Show("Le programme ne peut pas être lancé 2 fois!"); this.Close(); }
voila ou j'en suis:
Process^ Proc_EnCours = gcnew Process;
Proc_EnCours = Process::GetCurrentProcess();
array^Les_Proc = Process::GetProcesses();
for each (Process^ processus in Les_Proc);
if (Proc_EnCours->ProcessName == processus->ProcessName)
{MessageBox::Show("Le programme ne peut pas être lancé 2 fois!");
this->Close();
}
else
{
///////
}
Tu vas devoir passer par un mécanisme d'IPC (Interprocess Communications).
- Remoting
- message Windows "perso" que tu traites par un filtre ou la méthode WndProc (voir WM_APP, WM_USER)
- Data Copy (WM_COPYDATA)
- etc : http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ipc/base/interprocess_communications.asp)
Bon courage :-)
Je sais regarder si mon appli est déjà lancée, mais il manque quand même quelquechose dans vos sources :)
J'ai une application de type NOTEPAD mais en MDI. J'empêche donc que mon application démarre deux fois, mais .... dans le cas ou celle-ci est démarrée, je voudrais lui demander de charger le nouveau fichier TXT que j'envois dans le Args[]
Avez vous une solution pour lancer une procédure dans le process qui est déjà lancé ?
Amicalement,
bool isNew = false;
Mutex mut = new Mutex(false, mutName,out isNew);
if (!isNew) return;
Application.Run(new Form1());
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.