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