Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.024 Beiträge
 
Delphi 12 Athens
 
#16

AW: 1. Instanz nach vorn bringen, wenn 2. geöffnet wird - fensterunabhängig!

  Alt 6. Mär 2013, 12:41
Es klappt!
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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat