Die Ermittlung, ob ein Programm schon läuft, geschieht über die Klasse Process aus dem Namespace System.Diagnostics. Deren statische Methode GetProcessesByName() liefert ein Array aller laufenden Prozesse mit dem angegebenen Namen. Den Namen des aktuell laufenden Prozesses ermitteln Sie über die Eigenschaft ProcessName der statischen Methode GetCurrentProcess().
Da der aktuelle Prozess bei der Ausführung dieses Befehls bereits läuft, müssen Sie kontrollieren, ob mehr als ein Eintrag im Array enthalten sind (Eintrag 1 ist der schon laufende Prozess, Eintrag 2 der gerade mit der Überprüfung beschäftigte des gleichen Programms). Die Überprüfung erfolgt sinnvollerweise in der Methode Main(), der Namespace System.Diagnostics muss eingebunden sein.
static void Main()
{
/* Abfragen, ob bereits ein Prozess mit demselben Namen wie
* dem aktuellen Prozess ausgeführt wird */
if (Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName).Length > 1)
{
/* Die Anwendung wird bereits ausgeführt */
MessageBox.Show("Das Programm läuft bereits", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Stop);
return;
}
/* Anwendung mit dem Startformular starten */
Application.Run(new StartForm());
}