Einzelnen Beitrag anzeigen

Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.680 Beiträge
 
Delphi 5 Professional
 
#4

AW: RunAs und Begrenzung auf eine einzelne Instanz

  Alt 15. Mär 2012, 22:07
Ich hab's momentan erstmal folgendermaßen gelöst, auch wenn dadurch Race Conditions (welche Instanz ist schneller) nicht ausgeschlossen sind: Der Start via "Ausführen als" bekommt den Parameter "runas" mit:
Delphi-Quellcode:
function TMainForm.RunAs: Boolean;
var sei: TShellExecuteInfo;
begin
    FillChar(sei, SizeOf(sei), 0);
    sei.cbSize:= SizeOf(sei);
    sei.Wnd:= Self.Handle;
    sei.fMask:= SEE_MASK_FLAG_DDEWAIT or SEE_MASK_FLAG_NO_UI;
    sei.lpVerb:= 'runas';
    sei.lpFile:= PChar(Application.ExeName);
    sei.lpParameters:= PChar('runas');
    sei.nShow:= SW_SHOWNORMAL;
    Result:= ShellExecuteEx(@sei);
end;
Vor dem Erzeugen des Mutex prüfe ich auf Kommandozeilenparameter und wenn der erste "runas" ist, wird um eine halbe Sekunde verzögert via Sleep(500). Nicht besonders schön, aber das tut soweit. Dennoch bin ich für bessere Varianten offen .

MfG Dalai
  Mit Zitat antworten Zitat