Das Problem ist, dass das Application-Objekt ein Fenster hat. Eine äußerst unsaubere Lösung wäre es, entweder einen Hook zu installieren, um die Fenstererstellung zu verhindern, oder aber im Initialization-Abschnitt einer
Unit, die vor Forms und Controls eingebunden wird, IsLibrary auf True zu setzen. TApplication.Create prüft den Wert dieser Variablen. Ein Problem ist jedoch, dass dann auch andere Initialization-Abschnitte den falschen Wert von IsLibrary verwenden.
Meiner Meinung nach ist das jedoch auch ein Bug im Internet Explorer. Er sollte SendMessageTimeout o.Ä. verwenden.