Чтобы уже совсем было понятно про EXTENSIBLE.

> -- Docu/CP-New.odc писал(а):
> Записевые типы «по умолчанию» и с атрибутами EXTENSIBLE, ABSTRACT и LIMITEDКомпонентный Паскаль использует единственное средство для обозначения как интер­фей­сов объектов, так и их реализаций — записевые типы. Эта унификация позволяет зафикси­­ровать одни аспекты реализации интерфейса, оставляя открытыми другие. Такая гибкость часто желательна в сложных каркасах. Но такие архитектурные решения важно выражать как можно точнее, так как они могут повлиять на большое число клиентов.В этих целях записевый тип в Компонентном Паскале может иметь атрибуты, которые позво­ляют проектировщику интерфейса явно сформулировать несколько фундаментальных архитектурных решений. Важно, что компилятор может проверить соответствие этим решениям. Такими тщательно подобранными атрибутами являются EXTENSIBLE, ABSTRACT и LIMITED. Они позволяют различать четыре разные комбинации возможностей расширения и размещения [allocation]:атрибут	расширение	размещение	присваивание записейотсутствует («FINAL»)	нет	да	даEXTENSIBLE	да	да	нетABSTRACT	да	нет	нетLIMITED	нет*	нет*	нет*за исключением определяющего модуля

Так вот оказалось, что не только процедура New имеет атрибут EXTENSIBLE, но и Open. Так я смог расширить фабрику HostWindows.Directory, установить в Windows.Window эту новую фабрику (директорию) и ловить все открытия новых окон. Это позволило избежать частой периодической проверки открытости новых окон и убрать зависимость от Services.