Einzelnen Beitrag anzeigen

Benutzerbild von Dalai
Dalai

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

AW: RunAs unter Win7 (ohne UAC)

  Alt 16. Mär 2012, 22:14
Mmh, ich habe jetzt drei funktionierende Methoden ausmachen können, weiß aber nicht so recht, welche davon man benutzen sollte.
  • Fenster finden und Nachricht zum Schließen senden (falls der Parameter 'runas' übergeben wurde)
    Delphi-Quellcode:
    hWindow:= FindWindow('TMainForm', PChar(sApplicationTitle));
    if hWindow > 0 then
        SendMessage(hWindow, WM_CLOSE, 0, 0);
  • Bestimmte Nachricht registrieren und darauf reagieren
    RunAsUserMsg:= RegisterWindowMessage('RunAsUser'); und falls der Parameter 'runas' angegeben wurde, wird die Nachricht gesendet:
    SendMessage(HWND_BROADCAST, RunAsUserMsg, 0, 0); Die Nachrichtenverarbeitungsroutine ist dann diese:
    Delphi-Quellcode:
    procedure TMainForm.WndProc(var Msg: TMessage);
    begin
        if Msg.Msg = RunAsUserMsg then
            Self.Close;
        inherited;
    end;
  • Ähnlich wie Variante 1: Handle der ersten Instanz an die zweite übergeben (statt es zu suchen) und Nachricht zum Schließen senden.
Es gibt sicher noch andere Varianten, aber ich denke, das sind die einfachsten. Aber welche ist zu bevorzugen bzw. von welcher/welchen sollte man besser Abstand nehmen?

MfG Dalai
  Mit Zitat antworten Zitat