Идёт загрузка страницы...

htp://aptem.net.ru






Обустройство IE№9(180)/04.03.2002

Андрей СМЫНТЫНА razor20@ukr.net
Не ошибусь, если скажу, что Интернет является постоянным местом
пребывания, как на работе, так и дома довольно значительного числа
пользователей. Почему? А песню новую скачать, просмотреть новости,
отправить почту, поболтать с друзьями в чате, наконец. А что такое
Интернет в MS Windows? Чаще всего IE (Internet Explorer). Если Вы
согласны с подобным утверждением, эта статья для Вас.
Internet Explorer 5.х предоставляет множество путей для расширения
своей функциональности. Можно добавлять новые кнопки в панель
инструментов (Toolbar), расширять обычные и контекстные меню,
изменять список приложений, с которыми взаимодействует IE (почтовый
клиент, редактор HTML и т. д.). И это далеко не все, но надо
признаться, все другие требуют серьезных знаний в программировании и
слишком сложны для новичков.
Панель инструментов (Toolbar) Internet Explorer предоставляет
возможность для быстрого доступа к различным утилитам или
соответствующим пунктам контекстных меню. Вы можете, нажав на
кнопку, быстро послать документ на печать, обновить страницу или
просмотреть папку Favorites. По-моему, одна из самых неудобных
особенностей этой программы является выбор размера шрифтов. Так, в
отличие от NN (Netscape Navigator), существует лишь пять
предусмотренных вариантов: smallest-smaller-medium-larger-largest.
Порой хотелось бы получить больше.
Первый пример будет посвящен тому, как решить эту проблему. Мы
добавим свою кнопку на панель инструментов и заставим ее делать то,
что нам нужно. Для этого понадобится по минимуму: редактор реестра и
текстовый редактор.
В чем же заключается технология добавления своих расширений? Все
очень просто: в определенном ключе реестра записываются
соответствующие значения. Мы должны будем указать иконки,
отображающиеся на кнопке, появляющийся в контекстных меню текст, и
конечно, событие, которое будет происходить при нажатии на кнопку.
Запускаем редактор реестра regedit. Переходим к следующему ключу
HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Extensions,
каждый подключ которого представляет собой уникальный номер. Далее с
помощью команды «Правка» — «Создать» — «Раздел» создаем еще один
подключ с названием
{AA689822-DC16-44e8-BD5D-9E898466FA36}.
Теперь во вновь появившемся ключе задаем следующие строковые
значения:
ButtonText — текст, возникающий в виде всплывающей подсказки, когда
курсор мыши будет находиться над нашей кнопкой;
MenuText — название соответствующей опции в меню Tools;
MenuStatusBar — текст, который Internet Explorer будет отображать в
строке статуса при выборе меню;
Icon — путь к файлу-иконке с расширением .ico. Это и будет «лицо»
нашей кнопки;
HotIcon — когда курсор мыши находится над кнопкой, будет
отображаться указанная в этом параметре иконка;
Default Visible — может принимать значения «yes» или «no».
Обозначает, будет ли кнопка отображаться в панели инструментов. Если
указано «no», вы ее там не увидите, но сможете добавить, используя
опцию Customize (появляется при клике правой кнопкой мыши на панели
инструментов);
Clsid — в нашем случае должно иметь значение
{1FBA04EE-3024-11D2-8F1F-0000F87ABD16}. Оно указывает браузеру на
то, что мы хотим создать только кнопку, без связанного с ней
deskband (пристыковывающееся окошко, вроде того, что появляется при
нажатии на кнопку Search);
Exec — командная строка, которая будет выполнена при нажатии на
кнопку. Например: “notepad.exe”.
Script — если необходимо выполнить HTML-страницу, воспользуйтесь
этим параметром. В качестве его значения укажите файл, содержащий
только тэги <SCRIPT>. Он может иметь следующий вид
<SCRIPT LANGUAGE=“JavaScript”>
alert(“Hello !!!!”);
</SCRIPT>

Не запрещается использовать и другие элементы DHTML. Это может быть
обычная страница. Вы все также сможете иметь доступ ко всем объектам
на ней, только вот визуально отображаться они не будут, и эффект от
выполнения этой страницы будет заметен только благодаря содержимому
тэга <SCRIPT>.
Вы можете создать пустой текстовый файл с расширением *.reg и
скопировать туда некоторый текст. Это позволит использовать его как
шаблон при добавлении новых, а также изменении значений уже
существующих кнопок или меню. Для приведенных примеров достаточно
просто скопировать их текст в соответствующие файлы. После этого
двойным кликом добавьте информацию в реестр, предварительно изменив
соответствующие значения и пути к вашими файлам.


REGEDIT4
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Extensions\{AA689822-DC16-44e8-BD5D-9E898466FA36}]
"ButtonText"="Изменить размер шрифта"
"MenuText"="Изменить размер шрифта"
"MenuStatusBar"="Расширение меню View\Text Size"
"Clsid"="{1FBA04EE-3024-11d2-8F1F-0000F87ABD16}"
"Default Visible"="Yes"
"Icon"=" shell32.dll,50"
"HotIcon"="shell32.dll,50"
"Script"="C:\changefont.htm"
;Параметр Exec закомментирован, так как уже используется Script
;"Exec"="<some file>.exe"


 

Как вы успели заметить, два параметра позволяют осуществить
какое-либо действие. В случае с Exec можно вызвать внешнюю программу
или скриптовый файл, Script же выполнит HTML-страницу в текущем
контексте браузера. Это означает, что при помощи объекта external
можно получить полный доступ к данным отображаемого в сей момент
документа. Используя Exec, вы добьетесь аналогичного эффекта, но
делается это гораздо сложнее и требует большего времени на
подготовку. После того, как Вы повторили все вышеперечисленные
действия, при последующем запуске IE отобразит ваших рук творение,
как показано на рисунке 1.
Но вы преодолели лишь полпути. Теперь самое сложное — заставить все
это делать то, что нам нужно. Следующий листинг реализует простой
диалог выбора размера шрифта. Он очень прост, если Вы поймете идею,
то сможете добавить в него что-то свое.


<BODY>
<DIV ID=divChFont>
<SELECT ID=selFontSize ONCHANGE="javascript:function size(val){var i = document.all.length;for(var j = 0;j < i; j++){document.all.item(j).runtimeStyle.fontSize = val+'pt';}document.body.removeChild(divChFont);}size(selFontSize.value);">
<OPTION SELECTED VALUE=8>8
<OPTION VALUE=10>10
<OPTION VALUE=12>12
<OPTION VALUE=14>14
<OPTION VALUE=16>16
</SELECT>
</DIV>
</BODY>
<SCRIPT LANGUAGE=JavaScript >
var ext = window.external.menuArguments;
ext.document.body.insertAdjacentHTML("afterBegin",document.body.innerHTML);
</SCRIPT>


 

Если приведенный пример показался вам слишком сложным,
воспользуйтесь другим. Он позволит перевести ваш браузер в режим
HTML-редактора. Иногда это бывает полезно, особенно при небольших
изменениях на странице.
<SCRIPT LANGUAGE=JavaScript >
var ext = window.external.menuArguments;
ext.document.designMode=”On”;
</SCRIPT>

Пока мы рассмотрели особенности IE, отвечающие за представление
информации. Думаю, вы не раз сохраняли всю страницу только из-за
нескольких абзацев текста. Ведь так быстрее и удобнее, чем
копировать и вставлять заинтересовавший вас кусочек в другие
документы. Почему бы не наделить браузер функцией автореферата? Это
не обязательно должна быть сложная программа. Для начала достаточно,
если выделенный фрагмент текста будет добавляться к уже
существующему файлу; для каждого документа свой файл.
IE уже имеет стандартное меню для работы с выделенным текстом (copy,
paste etc.), нам остается добавить необходимый пункт в него. Схема
гораздо проще, чем в примере с кнопками. Достаточно открыть редактор
реестра и перейти к ключу
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt. Если
его нет, создайте новый. Все подключи этой ветви будут именами новых
меню. Значения по умолчанию аналогичны значениям Script, то есть в
них следует указать путь к скриптовому файлу. В общем, этого
достаточно, чтобы новая опция меню появилась.
Есть возможность избирательно вводить эти расширения, необходимо
лишь добавить параметр Contexts типа DWORD и присвоить ему одно из
следующих значений или их комбинацию. Например, значение 0x20
заставит браузер отображать ваше меню только при нажатии на
гиперссылке (см. табл.). Теперь спокойно запускайте IE и в случае
успеха, вы увидите меню, изображенное на рисунке 2.
Функция автореферата работает с выделенным текстом, следовательно,
наше значение 0x10. Вот код, реализующий эту функцию:
<SCRIPT LANGUAGE=JavaScript>
var refpath="C:\\referats\\";
//измените это значение на другой путь, если необходимо
var ForAppending = 8;
var ext = window.external.menuArguments;
var fs = new ActiveXObject("Scripting.FileSystemObject");
//создаем объект для доступа к файловой системе
if (!fs.FolderExists(refpath)) fs.CreateFolder(refpath);
//убедимся, что папка для рефератов существует, если нет создадим
var file = fs.OpenTextFile(refpath+ext.document.title+".htm",ForAppending,true);
//открываем или создаем файл реферата с именем, соответствующим заголовку окна
var selrange = ext.document.selection.createRange();
//получаем выделенный фрагмент
file.write(selrange.htmlText);
//добавляем его к файлу
file.Close();
</SCRIPT>

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


Перейти на главную страничку раздела "Интернет"