Ошибка рекурсии при переборе элементов TGroupBox в Delphi XE2Delphi , Компоненты и Классы , TLabelВ статье рассматривается проблема рекурсии при переборе элементов TGroupBox в Delphi XE2. При использовании функций EnumWindows и EnumChildWindows для просмотра окон запущенного приложения, также написанного на Delphi, обнаруживается, что рекурсия останавливается после объекта TGroupBox, хотя внутри него находятся другие элементы, такие как TLabel. Причина этой проблемы заключается в том, что TLabel не является окном и не имеет связанного с ним оконного хэндла. Поэтому внешние инструменты, основанные на EnumChildWindows (например, AutoIt и Spy++), не могут найти его. Стандартный способ экспонирования пользовательского интерфейса для автоматизации - это интерфейс автоматизации. Текущий стандарт - UIAutomation. Если необходимо просмотреть третье-party приложение, содержащее простые TLabel, и нет доступа к его интерфейсу автоматизации, то чтение текста на нем с помощью EnumWindow или EnumChildwindow, скорее всего, невозможно. В этом случае единственным вариантом может быть обращение к поставщику для получения доступа к интерфейсу автоматизации. Пример кода на Object Pascal (Delphi) для перечисления окон запущенного приложения:
В данном примере код перечисляет окна запущенного приложения и добавляет их в дерево В статье рассматривается проблема рекурсии при переборе элементов TGroupBox в Delphi XE2, когда функция EnumWindows и EnumChildWindows останавливаются на объекте TGroupBox, не видя вложенные элементы, такие как TLabel, из-за отсутствия у них оконного хэнд Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |