Для получения временного контроля над пользовательским интерфейсом 1С нам необходимо знать текущие координаты указателя мыши, и дескриптор окна, под указателем. Получить текущие координаты указателя, можно применив стандартный прием, установив низкоуровневый hook на перемещения мыши. В определении дескриптора окна под указателем нам поможет функция WindowFromPoint. Теперь с данным окном можно выполнить некоторые манипуляции, изменив его внешний вид и поведение.
Из всего разнообразия окон 1С выберем следующие классы:
V8FormElement – наиболее распостраненный вид (текстовые поля, метки, списки, и.т.д);
V8MDILocalFrame – главное окно в 8.1 и 8.2 (MDI интерфейс);
V8TopLevelFrameSDI, V8TopLevelFrameSDIsec – окна верхнего уровня 8.2 (SDI интерфейс).
Чтобы изменить внешний вид окна, воспользуемся парой функций - GetWindowLong (считывает биты стиля) и SetWindowLong (устаналивает биты стиля). Для получения эффекта «зеркальное отражение» - отображение текста справа налево, нужно всего лишь установить бит стиля WS_EX_LAYOUTRTL. Стереть элемент управления можно, обнулив бит стиля WS_VISIBLE или при помощи функции MoveWindow, установив ширину и высоту окна равными 0. Эффекты «разбегания» и «дрожания» элементов управления, при наведении на них указателя мыши можно реализовать при помощи все той же функции MoveWindow.
Для окон верхнего уровня эффект «прозрачности» можно получить следующим образом – устанавливаем бит стиля WS_EX_LAYERED, затем вызываем функцию SetLayeredWindowAttributes. Причем, если до вызова этой функции не был установлен бит WS_EX_TRANSPARENT, c окном можно работать в обычном режиме, несмотря на его «прозрачность», в противном случае указатель мыши будет «проваливаться» на окна лежащие ниже по Z-координате.
В файле находится приложение, реализующее, описанные эффекты. Для его работы необходим Net Framework 2.0.
Пример установки hook в среде .Net :
http://www.codeproject.com/Articles/7294/Processing-Global-Mouse-and-Keyboard-Hooks-in-C
Объявления функций API и примеры: