In dem Ereignis OnNewWindow2 setzt Du also Cancel := FALSE; (Wozu das überhaupt ?) Müsste hier nicht True stehen ?
In dem Ereignis OnBeforeNavigate2 setzt Du dann Cancel := TRUE;
Und in welchem Ereignis Navigierst Du die
URL neu ? Wenn ich dieses in dem Ereignis OnNewWindow2 machen habe ich einen Stack-Überlauf, da er sich ja immer wieder selber aufruft.