Hier nicht! Die Instanz kommt nicht in den Vordergrund - es blinkt lediglich das Taskbar-Icon.
Dieser Code funktioniert hier allerdings ganz gut:
Delphi-Quellcode:
uses
madKernel;
procedure CheckFirstInstance;
var
prcs: IProcesses;
begin
prcs := Processes(CurrentProcess.ExeFile);
if prcs.ItemCount > 1 then begin
prcs[0].Windows_[0].BringToForeground();
Halt;
end;
end;
initialization
CheckFirstInstance;
end.
Ich würde allerdings trotzdem den
Mutex als Sentinel verwenden, und die Indizierung auf 0 in den Listen muss auch nicht immer richtig sein.
Der Knackpunkt ist hier, daß die zweite Instanz hier die erste in den Vordergrund bringt und nicht die erste sich selbst. Das Privileg, das ForegroundWindow zu ändern hat nämlich nicht jeder. Der gerade im Vordergrund liegende Prozess allerdings schon.