Also erstmal HALT ist nicht grad geeignet, um ein Programm ordnungsgemäß zu beenden!
SendMessage(Application.Handle damit sendet du die Nachricht an dein eigenes Programm und das kann damit nun überhaupt nichts anfangen.
Wenn, dann sollte man es mindestens an die Anwendung (bzw. das Fenster) schicken, welches den Monitor steuert oder einfach also globele Broadcast-Nachricht an alle