Im Notfall einfach an alle Top-Level-Fenster der Anwendung schicken und schon hat man keine Probleme.
bzw.
WM_QUIT an TApplication
WM_CLOSE oder WM_QUIT an die TForm.
Aber du kannst es dir einfach machen, denn in Delphi reagiert keine TForm/TApplication auf WM_QUIT, sondern der Thread, egal an welches seiner Fenster es geschickt wird.
In Kurz:
Delphi-Quellcode:
function TApplication.ProcessMessage(var Msg: TMsg): Boolean;
begin
if PeekMessage(Msg, 0, 0, 0, PM_REMOVE) then
if Msg.Message <> WM_QUIT then
..
else
FTerminate := True; // Application.Terminate;
GetWindow
ThreadProcessId + PostThreadMessage(WM_QUIT) an den
GUI-Thread (oder an alle Threads, wo Fenster dran hängen)