Ein
PostMessage(Form1.Handle, WM_CLOSE, 0, 0);
käme erst an die Reihe, wenn alles andere korrekt abgearbeitet ist. Dann noch ein
caFree
im OnClose und das Fenster ist weg vom Fenster. Vllt vor dem (zu vermeidenden) Anzeigen noch ein
SetBounds(Screen.Width + 16, 0, 1, 1);
... und keiner hat's gesehen.
Das zur schnellen Lösung des akuten Problems.
Davon abgesehen kann man sich überlegen, wozu das Fenster notwendig ist und wozu nicht. Funktionelle Dinge ohne
GUI kannst Du auslagern und einfach aufrufen, eben wie Initialisierungen und Aufräumen. Dann sparst Du Dir das Fenster vllt komplett.
HTH