Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Обучение от Mail.Ru Group.
Онлайн-университет
для программистов с
гарантией трудоустройства.
Набор открыт!
2004 г.

Конструктор от Microsoft,
или Переделываем Internet Explorer своими руками

Татьяна Михно, Издательский Дом "КОМИЗДАТ"

Используя не совсем стандартный подход к настройкам операционной системы, можно значительно расширить возможности любимого браузера. Любимого - несмотря на то, что Netscape красивее выглядит, а Opera быстрее работает и потребляет меньше ресурсов...

Лично меня Internet Explorer привлек своей серьезной функциональностью и, только не смейтесь, открытостью, легкостью программирования под него. Интерфейсы этого браузера документированы в MSDN настолько хорошо, насколько это позволяют амбиции Microsoft, заинтересованной в популярности своего браузера.

Итак, не откладывая в долгий ящик, начнем хотя бы с того, что Internet Explorer (IE) можно запускать c ключом. Например, в меню Start > Run (Пуск > Выполнить) панели задач введите iexplore.exe и, через пробел, одно из значений, приведенных в таблице 1.

Этими ключами может быть полезно воспользоваться, например, при запуске IE из ярлыка на рабочем столе.

Рис. 1. Так выглядит редактор реестра

А теперь давайте изменим внешний вид многострадального детища Microsoft. Воспользуемся редактором системного реестра - программой Registry Editor (рис. 1).

Редактор реестра запускается из меню Start > Run (Пуск > Выполнить) панели задач. Просто введите regedit и нажмите <Enter>.

Прежде чем вносить изменения в системный реестр Windows, настойчиво рекомендую сохранить его пока еще неповрежденную копию. Для этого выберите меню Registry > Export Registry File… и введите имя файла, например сегодняшнее число. Путь к отступлению обеспечен, начинаем!

Хозяйке на заметку
Операционные системы Windows используют системный реестр для хранения информации о конфигурации компьютера, пользователях и прикладных программах. В правой части окна Registry Editor находится дерево разделов реестра, в левой показаны хранящиеся в них параметры и их значения. Параметры в реестре бывают трех видов: строковые (String), двоичные (Binary) и целые (DWORD). Изменить данные раздела, параметра или значения можно с помощью контекстного меню, появляющегося по правой кнопке мыши.

Для начала изменим заголовок окна - вместо порядком надоевшего "Microsoft Internet Explorer" поставим "Мой любимый браузер". Эта возможность работает в Internet Explorer, начиная с версии 5. Откройте в редакторе реестра раздел HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main и добавьте в него строковый параметр:

  • название - Window Title;
  • значение - Мой любимый браузер.

    Элементарно, не так ли? :-)

    Кстати, вам не надоел унылый серый фон панели инструментов любимого браузера? Предлагаю заменить его на что-нибудь более веселое. Главное, чтоб фоновая картинка была сохранена в формате BMP - как у меня (C:\My_Settings\back.bmp). Работает это в Internet Explorer, начиная с версии 4.

    Откройте в редакторе реестра раздел HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Toolbar - и добавьте в него строковый параметр:

  • название - BackBitmap;
  • значение - C:\My_Settings\back.bmp.

    Заменить вращающийся логотип в правом верхнем углу окна можно в Internet Explorer, начиная с версии 5. Для начала нужно нарисовать свой, в виде последовательности кадров - фаз вращения (как показано на рис. 2). Желательно нарисовать два логотипа: размер кадра одного - 26 x 26 пикселов, другого - 38 x 38. Количество кадров не важно, однако понятно - чем их больше, тем более плавным будет вращение. Сохраним кадры в формате BMP (у меня, например: C:\My_Settings\logo26.bmp и C:\My_Settings\logo38.bmp).

    Рис. 2. Логотип - самостоятельно! В MS Paint Рис. 2. Логотип - самостоятельно! В MS Paint

    Открываем в редакторе реестра уже знакомый раздел HKEY_CURRENT_USER\Software\ Microsoft\Internet Explorer\Toolbar - и добавляем в него два строковых параметра:

  • 1. название - BrandBitmap;
  • значение - C:\My_Settings\logo38.bmp;
  • 2. название - SmBrandBitmap;
  • значение - C:\My_Settings\logo26.bmp.

    Кстати, если вы читаете почту с помощью Outlook Express, вам наверняка будет интересно узнать, что два последних изменения отразились и на нем. Собственно, именно здесь используется больший вращающийся логотип - если установлено показывать надписи на кнопках.

    Иконку в виде буквы "е" можно заменить только с помощью специальных средств, например бесплатной программы ResHack или другого редактора ресурсов.

    Добавить свой пункт в стандартное контекстное меню несложно. А вот сделать так, чтоб при его выборе выполнялись конкретные действия - это уже сложнее. Для решения этой задачи нужно знать JavaScript или VBScript. Это работает в Internet Explorer версии 4 и выше.

    Но обо всем по порядку. Добавим в контекстное меню пункт Alert, при выборе которого будет выдаваться остроумное сообщение "Время пить кофе!". Сначала напишем собственно программу (в нашем случае на JavaScript). Откройте Notepad (Блокнот) и наберите в нем следующий текст:

    <script language="javascript">
    alert("Пора пить кофе!");
    </script>

    Сохраняем этот файл (C:\My_Settings\alert.htm). Теперь обеспечим запуск этой программы. В редакторе реестра откройте раздел HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt. Если такого нет - создаем. В нем заводим раздел под названием Alert (или любым другим - его название потом появится в Internet Explorer как пункт контекстного меню). Откройте свежеиспеченный раздел HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\Alert, дважды щелкаем на строковом параметре Default и присваиваем ему значение C:\My_Settings\alert.htm.

    Рис. 3. Internet Explorer - после всего того, что мы с ним сделали

    После всех означенных издевательств Internet Explorer у меня стал выглядеть следующим образом (см. рис. 3).

    Мы выполнили минимальные действия, нужные для включения своего пункта в контекстное меню Internet Explorer. А сейчас я позволю себе немного загрузить теорией наиболее любопытных читателей.

    Скрипты

    К сожалению, из контекстного меню можно запускать только скрипты JavaScript и VBScript. Приложения .exe или .dll придется загружать уже из скриптов. Зато скрипт имеет доступ к объекту window (окно приложения Internet Explorer, в котором выполняется скрипт) - через свойство menuArguments объекта external. Равно как и к прочим объектам, ниже по иерархии. То есть вполне корректно работает такой скрипт:

    <script language="javascript">
    alert(external.menuArguments.location.href)
    </script>

    который сообщает URL текущего документа.

    Или даже такой:

    <script language="javascript">
      alert("Cookie is: " +
             external.menuArguments.document.cookie);
    </script>

    - он сообщает, оставляет ли текущий веб-сайт на нашем компьютере свои cookie.

    Реестр

    Полный путь к скрипту - далеко не единственное, что можно добавить в реестр. Оказывается, запуск скрипта можно регулировать двумя необязательными, но очень полезными параметрами. Первый параметр задается в реестре в разделе HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\Alert целым числом (DWORD):

  • название - contexts;
  • значение - битовая маска, состоящая из одного или суммы нескольких следующих шестнадцатеричных чисел:

    0x1 по умолчанию
    0x2 рисунки
    0x4 элементы управления
    0x8 таблицы
    0x10 выделенный текст
    0x20 ссылки

    То есть, чтобы в контекстном меню пункт Alert появлялся только над рисунками и ссылками, значение contexts должно быть:

    2h + 20h = 22h

    Второй параметр, задающийся в том же разделе реестра, имеет тип DWORD:

  • название - Flags;
  • значение - 0x1.

    Если вы потрудились его задать, при выполнении скрипта отобразится диалоговое окно, при его умелом программировании вполне способное обмениваться данными с пользователем.

    Скрипт будет запускаться, как если бы он был вызван с помощью метода showModalDialog. С единственным, правда, отличием - скрипт получает доступ к родительскому окну посредством свойства menuArguments объекта external.

    И, наконец, на панель инструментов можно добавить свою кнопку, по нажатию которой будет запускаться указанная вами программа. Для того чтобы эта программа обменивалась данными с Internet Explorer, понадобятся навыки объектного программирования и знание модели COM. Причем эта возможность существует в Internet Explorer версии 5 и выше.

    Для создания своей кнопки на панели инструментов Internet Explorer нужно подготовить рисунок в двух экземплярах - для активного и неактивного состояния. Неактивную кнопку принято рисовать в оттенках серого, активную - цветной.

    Изображение на кнопке панели инструментов IE - это пиктограмма (или иконка) с расширением .ico, содержащая рисунки 16 x 16, 20 x 20 или 36 x 36 пикселов, 16 или 256 цветов стандартной палитры Windows. Пример показан на рис. 4. У меня иконки сохранены как C:\My_Settings\cool.ico и C:\My_Settings\hot.ico. Теперь их нужно поместить на панель:

    Рис. 4. Иконки для активного (а) и неактивного (б) состояния кнопкиРис. 4. Иконки для активного (а) и неактивного (б) состояния кнопки

    Создайте уникальный идентификатор GUID, например, {AF56C981-ED80-4b90-A91F-C2F9E791F1DC}, с помощью программы guidgen.exe или uuidgen.exe.

    Откройте в редакторе реестра раздел HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Extensions - и создайте в нем раздел под именем GUID. У меня получилось HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Extensions\{AF56C981-ED80-4b90-A91F-C2F9E791F1DC} Откройте этот раздел.

    Добавьте в него следующие строковые параметры:

  • название - HotIcon;
  • значение - C:\My_Settings\hot.ico;
  • название - Icon;
  • значение - ../../../../../C:/My_Settings/cool.ico.

    Это пути к иконкам для активного и неактивного состояния кнопки.

    Если вы не настраивали панель Internet Explorer специально, можно сразу поместить на нее нашу кнопку. Для этого добавьте в раздел строковый параметр:

  • название - Default Visible;
  • значение - Yes.

    Иначе кнопку придется добавлять на панель инструментов с помощью ее настройки - диалогового окна Customize Toolbar (Настройка панели инструментов).

    Кнопки могут сопровождаться подписью и подсказкой, появляющимися при наведении указателя мыши. Обычно это один и тот же текст. Этот текст тоже необходим для кнопки; его можно создать, добавив в наш раздел строковый параметр:

  • название - ButtonText;
  • значение - "Текст подсказки к кнопке".

    Рис. 5. Кнопка добавлена

    (О том, как после этого заставить Internet Explorer сделать что-нибудь полезное, расскажем ниже.)

    Несложно также добавить свой пункт в меню Tools (Сервис) или Help (Справка) Internet Explorer версии 5 и выше. Давайте создадим пункт "Моя команда":

    1. Создайте новый уникальный идентификатор GUID или воспользуйтесь уже созданным. Если Вы создали новый GUID, откройте в редакторе реестра раздел

    HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Extensions и создайте в нем раздел, имя которого - GUID, созданный на предыдущем шаге. Откройте его.

    Если же новый GUID не создавался, откройте раздел HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Extensions\{AF56C981-ED80-4b90-A91F-C2F9E791F1DC}

    2. В этот раздел добавьте строковый параметр:

  • название - MenuText;
  • значение - Моя команда.

    Это текст нового пункта меню - его содержание ограничивается только вашей фантазией.

    3. Добавьте в наш раздел строковый параметр:

  • название - CLSID;
  • значение - {1FBA04EE-3024-11d2-8F1F-0000F87ABD16}

    Значение должно быть именно это и никакое другое. Эта константа - CLSID расширения панели инструментов Internet Explorer для приложений.

    4. Если новый пункт предназначен для меню Help (Справка), добавьте в наш раздел строковый параметр:

  • название - MenuCustomize;
  • значение - help.

    Если новый пункт предназначен для меню Tools (Сервис), этого пункта быть не должно.

    5. Если нужно, чтоб при выборе этого пункта в строке состояния появлялся текст, добавьте в раздел строковый параметр:

  • название - MenuStatusBar;
  • значение - "Текст строки состояния".

    Итак, появилась кнопка или новый пункт в меню. Теперь привяжем к ней (или к нему) функциональность. Тут методика для кнопки и для пункта меню одинакова. При нажатии на кнопку или выборе пункта меню можно запускать следующие объекты:

  • COM-объекты;
  • скрипты;
  • приложения.

    Особенности создания и запуска COM-объектов подробно описаны на сайте компании Microsoft, об остальных же сейчас пойдет речь.

    Скрипт

    Если нужно запускать скрипт, добавьте в соответствующий раздел реестра строковый параметр:

  • название - Script;
  • значение - полный путь к скрипту, который должен запускаться (например, C:\test.js).

    Приложение

    Чтобы запускалась программа с расширением .exe, добавьте в раздел строковый параметр:

  • название - Exec;
  • значение - полный путь к приложению, которое должно запускаться, например C:\direct.exe.

    Проделать действия, указанные выше не сложно, главное - внимательность. Зато представьте, с каким удовольствием вы будете пожинать плоды своих усилий и показывать их друзьям :-).

  • Новости мира IT:

    Архив новостей

    Последние комментарии:

    Релиз ядра Linux 4.14  (9)
    Среда 22.11, 19:04
    Loading

    IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

    Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
    тел. +7 985 1945361
    Пресс-релизы — pr@citforum.ru
    Обратная связь
    Информация для авторов
    Rambler's Top100 TopList liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня This Web server launched on February 24, 1997
    Copyright © 1997-2000 CIT, © 2001-2015 CIT Forum
    Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...