суббота, 21 февраля 2009 г.

Минимизация ущерба от апплетов - иконки в трее

Это перевод Applet mitigations - notification area handlers. Автор: Ларри Остерман.

Сначала (как всегда), пересмотрите своё решение по поводу того, нужен ли вам вообще обработчик области уведомлений. Я серьёзно: подумайте, подходяще ли будет для вашего приложения иметь иконку в трее. Вы действительно верите, что он обеспечивает достаточную функциональность, чтобы оправдать трату такого ценного ресурса, как свободное место в трее? Правда?

Исходя из своего опыта, я могу сказать, что некоторые иконки в трее предоставляют действительно полезную информацию или часто используемую функциональность (на ум приходят громкость, часы, менеджер задач, безопасное извлечение устройства и RSS Bandit). Некоторые имеют сомнительную ценность (на ум приходят сеть и Outlook), а некоторые вообще просто дерьмо(*) (например, Quicktime, иконки от видео-драйвера и принтера). В конце концов, вы серьёзно считаете, что пользователь хочет знать, сколько чернил в его принтере, всё время (даже когда он его не использует)?

Как я уже упоминал в прошлых постах, вам всегда следует предусматривать механизм для отключения ваших значков в трее - это просто вежливость (а если вы этого не сделаете, то ваши клиенты всё равно найдут способ выключить их, только в этом случае они будут уже недовольны). Если уж вы делаете механизм для выключения ваших значков в трее, то почему бы вам не добавить его в виде чек-бокса в установщик? Таким образом, ваш клиент никогда и не будет раздражён! В дополнение к этому (и я тоже уже об этом говорил), убедитесь, что ваш обработчик системного трея работает с пользовательским профилем, а не глобальными настройками. Таким образом вы: (а) не будете требовать элевации для отключения вашего значка в трее, и (б) вы позволите разным пользователям делать разный выбор - одни могут захотеть использовать ваш апплет, другие - нет.

Если вы решили, что вы ДОЛЖНЫ иметь обработчик области уведомлений, то зачем вам создавать для этого целый процесс? Windows предлагает несколько механизмов, позволяющих вам уменьшить негативное влияние вашего апплета (они не снимают влияние - только уменьшают его). Например, вы можете использовать планировщик заданий (уже упоминавшийся в моём посте про обновлялки) для запуска вашего апплета при входе пользователя - заодно это предоставит пользователю способ отключать, включать и настраивать вашу задачу. В Vista(**) вы можете сделать свою задачу как запускающую COM handler - в этом случае ваш апплет будет работать в готовом процессе (hosting process). Что означает, что вместо использования специально выделенного процесса, ваш апплет будет жить в процессе, который будет разделяться с другими задачами (включая и другие обработчики области уведомлений).

И последнее замечание по значкам в трее: если вам нечего сказать - то просто заткнитесь! :) Лишние значки в области уведомлений действительно сильно раздражают людей, и одним из способов снизить их гнев является скрытие своего значка, если вам сейчас нечего сказать пользователю. Вы можете видеть это на примере Windows Defender - он вставляет в трей иконку только когда ему нужно уведомить пользователя, а иначе он не возникает. Однако здесь есть и другой подводный камень: реализация такого поведения может иметь нежелательные последствия. Когда команда Defender-а реализовала это поведение (показывать иконку только при проблеме), они получили кучу жалоб от пользователей, которые считали, что раз иконки нет, то Defender почему-то не работает. Из-за этого команда Defender-а добавила опцию (она выключена по-умолчанию), позволяющую показывать иконку в трее всё время. Лично я считаю, что люди стали думать таким образом потому, что они были воспитаны плохо написанными приложениями, которые показывали свой значок всё время на протяжении работы, поэтому пользователи стали верить, что они не защищены, если только они не видят в трее значок, хотя значок не имеет ничего общего с уровнем защиты.

Далее: минимизация ущерба от апплетов - службы.

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

Примечание переводчика:
(**) Я не силён в COM, но разве ровно это же нельзя сделать и в XP?

2 комментария:

  1. да вообще ничего не надо, пустой экран и хватит - получится замечательная ОС для идиотов.
    Виндовс, начиная с Виста, становится системой для глупеньких. Но таким хоть как упрости - толку не будет, потому что в их интересы компьютеры не входят. А так я запарился на новом месте каждый раз отключать автоскрытие значков в трее. КАК ЭТО РАЗДРАЖАЕТ. Из-за таких козлов!

    ОтветитьУдалить
  2. насчет COM - вероятно имеется в виду не COM вообще, а конкретно Task Scheduler
    Видимо, в Висте в него добавили host process и соотв. новый вид задач - не EXE/CMD, а COM-сервер

    ОтветитьУдалить

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

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

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

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

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

Примечание. Отправлять комментарии могут только участники этого блога.