вторник, 25 июня 2013 г.

Как избавить свой модуль от опасных зависимостей

Написал тут журнал рабочего времени. Он перехватывает сообщения, посылаемые каркасом в документы и собирает статистику, в которой, кроме подсчёта нажатий на клавиши и кликов мышкой, определяется ещё и итоговый размер текста.

А у текстов (TextViews) есть некоторая зависимость от главнейшего модуля ядра Windows. Поскольку для перехвата сообщений журнал прямым образом встраивается в Windows, то при старте ядра происходят всякие нехорошие вещи, связанные с циклическим импортом.

Решил проблему простым хуком, который устанавливается в журнал уже после того, как прогрузится всё ядро, с помощью скрипта System\Config. То есть, зависимости от TextViews перенесены из журнала в хук.

Есть и другой способ избавления от зависимостей, это - межмодульная шина сообщений. Способ достаточно изящный и эффективный, но в данном случае не хотелось иметь никаких дополнительных привязок, ведь базовая функциональность журнала должна опираться исключительно на ядро.


вторник, 26 февраля 2013 г.

Быстрота следует за подготовкой

Самописный контрол Caption потребовал центровки надписи и отбивки от краёв. Код занял 4 строчки, а вот усилия по вспоминанию механизма настройки соответствующих свойств контрола и разборки с DevInspector заняли больше часа.

Постоянные читатели