notfalls sende doch WM_CLOSE einfach an alle Threads der Anwendung
Aber geh lieber über TerminateProcess, den WM_CLOSE wird auch nur von der Nachrichtenschleife verarbeitet und letztendlich wird wieder TerminateProcess aufgerufen.
PS: ein DelphiProgramm beendet nur die Anwendung, wenn WM_CLOSE über das MainForm eingeht.
Also wenn WM_CLOSE ohne Form (nur direkt an Nachrichtenschleife gesendet), oder wenn WM_CLOSE an Nicht-MainForm sollte keine Delphi-Anwendung beenden.