Und ich schrieb zwei mal, du sollest den Debugger für die Zweitinstanz benutzen, um herauszufinden, wo du landest, sonst können wir nicht helfen.
Delphi-Quellcode:
// Mutex erstellen...
// Mutex-Rückgabewert:
case GetLastError
of
0:
begin
{ Wir haben den Mutex angelegt; sind also die erste Instanz. }
// Debug
showmessage('
Hier passiert gar nichts, es ist die Erstinstanz, das Programm wird sichtbar');
end;
ERROR_ALREADY_EXISTS:
begin
{ Es gibt also schon eine Instanz - beginnen wir mit dem Prozedere. }
// Debug
showmessage('
Es gibt bereits eine Instanz, Befehle werden übergeben');
try
HandleSecondInstance;
finally
{ was auch immer passiert, alles endet hier ;o) }
{ Die 183 ist nicht ganz zufällig, kleiner Spaß }
Halt(10);
end;
end;
else
{ Keine Ahnung warum wir hier landen sollten, }
{ außer Microsoft hat wiedermal die Regeln geändert. }
{ Wie auch immer - wir lassen das Programm starten. }
// Debug
showmessage('
Ausnahmefehler');
end;