суббота, 10 апреля 2010 г.

Приманка для свойств экрана в Панели управления

Это перевод The decoy display control panel. Автор: Реймонд Чен.

В последний раз мы видели пример "приманки" для апплета Принтеры, используемой в службе совместимости приложений. Сегодня, мы посмотрим на другую приманку, на сей раз - для апплета свойств экрана.

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

Чтобы поддерживать многомониторные конфигурации, вкладка свойств должна была быть значительно изменена. Но когда вы пытались открыть свойства экрана на одной из этих систем с установленными агрессивными драйверами - система вылетала, потому что драйвер начинал свои перестановки, хотя то, с чем он это делал теперь, не соответствовало ожиданиям разработчика драйвера!

Решение было в том, чтобы создать фальшивую вкладку свойств, которая выглядела так, как классическая вкладка в Windows 95. Её целью было быть приманкой для агрессивных драйверов, которые могли творить с ней всё, что угодно. В то время как настоящая вкладка свойств (которая и показывалась пользователю), будучи обновлённой и переработанной, оставалась в безопасности.

Не было никакой попытки заставить эту приманку выполнять какую-то полезную работу. Вся её работа заключалась во "всасывании" плохого поведения. В результате, драйверы теряли функциональность, которую они достигали этими манипуляциями, но, по-крайней мере, апплет экрана работал и позволял пользователю делать то, что он хотел: изменять свойства экрана.

Комментариев нет:

Отправить комментарий

Можно использовать некоторые HTML-теги, например:

<b>Жирный</b>
<i>Курсив</i>
<a href="http://www.example.com/">Ссылка</a>

Вам необязательно регистрироваться для комментирования - для этого просто выберите из списка "Анонимный" (для анонимного комментария) или "Имя/URL" (для указания вашего имени и ссылки на сайт). Все прочие варианты потребуют от вас входа в вашу учётку (поддерживается OpenID).

Пожалуйста, по возможности используйте "Имя/URL" вместо "Анонимный". URL можно просто не указывать.

Ваше сообщение может быть помечено как спам спам-фильтром - не волнуйтесь, оно появится после проверки администратором.