Довел небольшой проект до состояния, когда его можно показать. Вкратце, что это и с чем его едят.
Основная задача проекта – обеспечить программиста набором компонентов облегчающих разработку UI на основе HTMLayout
Основой библиотеки стали несколько behavior, призванных сообщать информацию о
текущем состоянии дерева документа и отдельных элементов
выводить отладочную информацию по запрошенным элементам (type.class#id, родственники/потомки, положение на экране)
упростить выявление ошибок связанных с event-ами
предложить простой способ изменения отдельных атрибутов css (например, подсветка элементов одного класса)
создавать дампы html (всего документа или отдельных элементов)
обеспечивать возможность модификации дерева документа
Предполагается предоставлять два способа подключения HTMLayoutDBG к клиентскому приложению:
Набор независимых behavior, подключаемых и настраиваемых пользователем самостоятельно
Приложение HTMLayoutDBG, пригодное для поверхностного анализа и отладки документа.
Список behavior: dbgpath – полный путь до элемента над которым находится курсор
dbgelement – вывод базовой информации об элементе над которым находится курсор
dbgbar – упрощенный аналог Web Developer Toolbar из комплекта расширений Mozilla Firefox
dbgtree – дерево документа (с возможностью модификации)
dbgeventlog – контейнер позволяющий просматривать (в удобном виде) (группировки, подсветка) события.
Скриншот forms/datetime.htm из SDK. Подсвечены элементы таблички и тег h3
src exe
Лицензия. В будущем, если дойдут руки до чего-то сложного, возможно, часть behavior-ов будет распространяться по коммерческой лицензии, а пока boost
В начале следующей недели причешу код и выложу комментарии, как подключать behavior-ы к клиентскому приложению (в текущий момент это может быть затруднительно).
Пока оно сырое, поэтому просьба на баги сильно не ругаться.
Здравствуйте, adontz, Вы писали:
A>ИМХО надо делать что-то навешивающееся сверху типа Spy++ и HTMLDump.
А оно удобно в работе? (ни с тем ни с другим плотно не сталкивался)
Надо будет подумать, как можно приаттачить к пользовательскому приложению свои behaviors. Если это получится сделать, то можно легко собрать HTMLayoutSpy
Здравствуйте, ShaggyOwl, Вы писали:
SO>А оно удобно в работе? (ни с тем ни с другим плотно не сталкивался)
ДУмаю да, инструмент в целевой аудитории весьма популярен.
SO>Надо будет подумать, как можно приаттачить к пользовательскому приложению свои behaviors. Если это получится сделать, то можно легко собрать HTMLayoutSpy
А зачем именно behavior? behavior это просто имя группы обработчиков сообщений. Совершенно не объязательно в данном конкретном случае из группировать и именовать.
Здравствуйте, adontz, Вы писали:
A>ДУмаю да, инструмент в целевой аудитории весьма популярен.
Ок, понятно. Запишу, как фичу
SO>>Надо будет подумать, как можно приаттачить к пользовательскому приложению свои behaviors. Если это получится сделать, то можно легко собрать HTMLayoutSpy A>А зачем именно behavior? behavior это просто имя группы обработчиков сообщений. Совершенно не объязательно в данном конкретном случае из группировать и именовать.
Тут что интересует. Есть HWND пользовательского приложения, в котором происходит событие, допустим BUTTON_PRESS. Как мне узнать о событии?
Здравствуйте, adontz, Вы писали:
A>HTMLayoutWindowAttachEventHandler A>HTMLayoutWindowDetachEventHandler
Верно.
Момент который не укладывается в голове, вот в чем.
Допустим в приложении HTMLayoutSpy реализован EventHandler, который надо приаттачить к пользовательскому процессу Sacrifice.exe.
Получаем ситуацию при которой HTMLayout и наш EventHandler лежат в двух разных процессах (и соответственно, адресных пространствах). Это нормально? Или тут должна использоваться более сложная схема? Может говорю глупость, но этот вопрос действительно не понимаю
Здравствуйте, ShaggyOwl, Вы писали:
SO>Получаем ситуацию при которой HTMLayout и наш EventHandler лежат в двух разных процессах (и соответственно, адресных пространствах). Это нормально? Или тут должна использоваться более сложная схема? Может говорю глупость, но этот вопрос действительно не понимаю
Надо в целевой процесс внедрять DLL в которой и будет EventHandler. Так что всё в рамках 1 процесса. Собственно этот EventHandler уже через какие-то особые механизмы может пересылать копии сообщений HMLayoutSpy.
Здравствуйте, adontz, Вы писали:
A>Надо в целевой процесс внедрять DLL в которой и будет EventHandler. Так что всё в рамках 1 процесса. Собственно этот EventHandler уже через какие-то особые механизмы может пересылать копии сообщений HMLayoutSpy.
Здравствуйте, ShaggyOwl, Вы писали:
SO>Здравствуйте, adontz, Вы писали:
A>>Надо в целевой процесс внедрять DLL в которой и будет EventHandler. Так что всё в рамках 1 процесса. Собственно этот EventHandler уже через какие-то особые механизмы может пересылать копии сообщений HMLayoutSpy.
SO>Ага, теперь понятно куда копать
Там еще бы входы выходы оставить для automated testing — логгирование событий и их воспроизведение. И можно продавать — покупатели есть.
ПыСы: Я вскорости выведу наружу API для манипуляции и опроса стилей элементов.
Здравствуйте, c-smile, Вы писали:
CS>Там еще бы входы выходы оставить для automated testing — логгирование событий и их воспроизведение. И можно продавать — покупатели есть.
Если есть заказчик, надо делать
CS>ПыСы: Я вскорости выведу наружу API для манипуляции и опроса стилей элементов.
Это будет круто