Не ОС красит веб...
Пара практических занятий. Занятие второе
Сергей Трошин
На прошлом занятии мы с вами по мере сил и возможностей учились задавать фон папок Windows, писать комментарии к ним, а также задавать фон панели предпросмотра. Освоили? Получилось? Приступаем к следующим процедурам.
Предпросмотр медиа-клипов
В действительности, в стандартный шаблон заложен предварительный просмотр не только графических файлов и веб-страничек. Точно так же можно выводить и "превьюшки" видеоклипов или звуковых файлов - при этом на информационной панели появляется уменьшенный вариант всем знакомого Windows Media Player шестой версии.
Но все дело в том, что функция эта изначально отключена, поскольку ее включение создает небольшую проблему с удалением файлов. При попытке подхватить файл с видеоклипом мышкой для перетаскивания в Корзину он одновременно открывается в проигрывателе и становится автоматически заблокированным - открытый файл удалить невозможно. Вот если выделить два файла - то удаляй сколько хочешь, а один - никак (разве что используя другой файловый менеджер, который не направляет клип в проигрыватель при выделении).
Но так было вплоть до выхода седьмой версии Windows Media Player. При использовании данной версии эта функция в Windows Me полностью работает и не создает никаких проблем при удалении файлов! Так что держать ее заблокированной нет более никакого смысла, поскольку работать с мультимедийными файлами, автоматически отображающимися прямо в окне Проводника, чрезвычайно удобно.
Для включения этого режима внутри нашей папки с музыкой найдите в файле folder.htt (напомню, мы используем стандартный шаблон!) строки, которые обеспечивают распознавание типов мультимедийных файлов:
function IsMovieFile(ext) {
// disabled
return false;
var types = ",asf,avi,wmv,wvx,m1v,mov,mp2,mpa,
mpe,mpeg,mpg,mpv2,qt,asx,";
и
function IsSoundFile(ext) {
// disabled
return false;
var types = ",aif,aiff,au,mid,midi,rmi,snd,wav,
mp3,m3u,wma,";
Перед словами "return false" нужно установить два слэша (закомментировать их): "// return false;", либо вообще удалить первые две строки функции - это разблокирует предпросмотр клипов. Можете сразу после сохранения изменений это проверить - на информационной панели будет появляться небольшой проигрыватель при выделении любого файла, расширение которого совпадает с теми, что перечислены в вышеобозначенных строках.
При этом для звуковых файлов будет выводиться усеченный вариант плейера - без дисплея. Ничто не мешает внести в этот список и новые типы файлов, главное - чтобы у вас были установлены соответствующие кодеки, расширяющие возможности стандартного проигрывателя. В этом случае вы получите такие строки:
var types = ",asf,avi,wmv,wm,wvx,wmx,wmp,
m1v,mov,mp2,mpa,mpe,mpeg,mpg,mpv2,qt,
asx,qm,ivf";
- для видеофайлов и
var types = ",aif,aifc,aiff,au,mid,midi,rmi,snd,wav,
mp3,m3u,wma,wax,cda";
- для звуковых.
Но простым включением предварительного просмотра клипов дело не ограничивается, поскольку потенциал у этой технологии не исчерпывается уже готовым стандартным шаблоном. Реализован этот потенциал с помощью так называемых элементов управления ActiveX (ActiveX Control), вносимых в HTML-документ с помощью тега <object>.
Программистам работа с ними должна быть хорошо знакома, простым же пользователям скажу, что за ActiveX отвечают файлы с расширением ocx, конкретно же за внедрение Media Player 6 в HTML-документ - файл msdxm.ocx, а за седьмую версию - wmp.ocx.
А потому ничто не мешает еще сильнее отойти от заданного Microsoft шаблона и заменить, например Media Player 6 на более продвинутый и симпатичный Windows Media Player 7.1, поскольку он тоже поддерживает внедрение в HTML-документ. Этот проигрыватель, как я уже отмечал, не затрудняет удаление файлов.
Давайте сделаем так, чтобы видеоклипы открывались в Windows Media Player 7.1. Для этого найдите во все том же шаблоне folder.htt следующие строки:
Preview.innerHTML = '<p>' +
'<object id=MediaPlayer class=Movie classid="clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95">' + '<param name="ShowDisplay" value="false">' +
'<param name="AutoPlay" value="false">' + '</object>';
MediaPlayer.EnableContextMenu = false;
MediaPlayer.Open(item.Path);
Это полное описание используемого для вывода видео элемента ActiveX, имеющего идентификатор (CLSID) {22D6F312-B0F6-11D0-94AB-0080C74C7E95}, то есть - Media Player 6. Чтобы вместо него оказался проигрыватель седьмой версии, надо сменить этот идентификатор на {6BF52A52-394A-11d3-B153-00C04F79FAA6}, принадлежащий Media Player 7. Но этого мало. Дело в том, что у различных элементов ActiveX различаются и параметры, например, по-другому передается в проигрыватель путь к выбранному файлу (метод ".Open" в шестой версии и метод ".URL" в седьмой), поэтому придется переписать весь этот участок кода:
Preview.innerHTML = '<p>' + '<object id=
MediaPlayer7 classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6" width=
"176" height="167">' + '<param name=
"AutoStart" value="false">' + '</object>';
MediaPlayer7.EnableContextMenu = false;
MediaPlayer7.URL = (item.Path);
Как видите, здесь, помимо изменения некоторых параметров, задается еще и размер окна проигрывателя, чтобы он лучше выглядел в зоне предпросмотра. Аналогично устанавливается прослушивание и аудиофайлов через Windows Media Player 7. Единственное, что нужно для работы с ActiveX, - иметь под рукой документацию со всеми их параметрами.
В случае с WMP7 вы найдете ее на сайте Microsoft:
msdn.microsoft.com/library/en-us/wmplay/mmp_sdk/
playercontrolguide.asp.
Технология веб-интеграции позволяет вносить в Проводник очень серьезные изменения, вплоть до встраивания в Windows проигрывателей сторонних разработчиков для воспроизведения файлов, которые не понимает Media Player. Например, можно сделать так, чтобы файлы RealMedia открывал в зоне предпросмотра очень популярный RealPlayer.
Из-за особенностей этого проигрывателя сделать это, правда, посложнее, чем в случае с WMP, и код получится несколько больше. Сначала, для того, чтобы система распознавала файлы RealPlayer, надо после блока "function IsSoundFile(ext)" вставить новую аналогичную функцию со списком расширений (следите за правильной расстановкой фигурных скобок):
function IsRealFile(ext) {
var types = ",ra,rm,viv,ram,rmm,rmd,swf,smi,
smil,rt,rp,";
var temp = "," + ext + ",";
return types.indexOf(temp) > -1;
}
Затем рядом с уже имеющимися объектами MediaPlayer7 и MediaPlayer (после них - по аналогии) нужно вставить еще один объект - RealPlayer, вернее, даже два объекта, потому что для этого проигрывателя отдельно идет дисплей, а отдельно - панель управления:
else if (IsRealFile(ext))
{
Preview.innerHTML = '<p>' + '<object id=RealPlayer class=Movie classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA">' + '<param name="controls" value="ImageWindow">' + '<param name="MaintainAspect" value="true">' + '<param name="NoLogo" value="true">' + '<param name="Console" value="Real">' + '</object>' + '<object id=RealPlayerCP classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" width="176" height="31">' + '<param name="controls" value="ControlPanel">' + '<param name="Console" value="Real">' + '</object>';
RealPlayer.Source = (item.Path);
}
Описывать, что какая строка обозначает, вряд ли есть смысл: если есть желание ознакомиться со всеми многочисленными параметрами RealPlayer как элемента ActiveX, изучите страничку
service.real.com/help/library/guides/
extend/htmfiles/activex.htm. Тот же код, что я привожу, вполне достаточен и работоспособен с последними версиями проигрывателя. Разумеется, необходимо, чтобы RealPlayer был установлен в вашей системе.
Ограничение доступа к папкам
Многие пользователи хранят на жестком диске какие-либо личные документы, случайный или намеренный доступ к которым посторонних был бы, по меньшей мере, крайне неприятен. Причем все это особенно касается других членов семьи пользователя, вплоть до кошек и собак, обычно сующих свой нос во все на свете, стоит только немного потерять бдительность.
Бесспорно, если вы хотите иметь четкие гарантии, что никто ни дома, ни на работе не сможет вторгнуться в вашу "прайвеси" и прочитать любовную переписку, передать бухгалтерские документы в соответствующие органы или узнать, какие сайты вас больше всего привлекают в интернете, то придется шифровать диск специальными программами (например,
StrongDisk Pro - см. Upgrade # 22 (36)).
Процедура эта, в принципе, не самая приятная - и ресурсы процессора при расшифровке на лету расходуются немалые, и есть риск пароль длиннющий забыть, и в случае сбоя на диске имеется вероятность потерять всю столь старательно скрытую от чужих глаз информацию.
Но если надо защитить папку с не самыми критичными документами от ненамеренного проникновения в нее малолетнего спиногрыза или тренирующейся в удалении файлов жены и вы много не потеряете, если дите все-таки догадается, как взломать все преграды (это, кстати, неплохой стимул для его самообразования - запретный плод и все такое, а уж жена-то точно не догадается), то можно поступить гораздо проще: использовать преимущества, которые дает незаслуженно игнорируемая веб-интеграция.
В качестве примера опять используем нашу папку с музыкой - в файл folder.htt перед строкой
<body scroll=no onload=Load()>
добавьте следующий примитивный код:
<script language="VBScript">
par=InputBox ("Please, enter the password", "Login")
If par="" Then
par=0
End If
If Asc(par)>57 Then
par=Asc(par)
End If
If par=Upgrade Then
pass
Else
err
End If
Sub err
MsgBox "Access Denied!"
Navigate "C:"
End Sub
Sub pass
MsgBox "Welcome!"
End Sub
</script>
Готово, теперь, не зная пароля (который прописан прямо в этом коде: Upgrade), попасть в данную директорию будет несколько затруднительно - в случае ошибки вместо нее откроется диск С:. Впрочем, многого от этого скрипта не ждите - для других файловых менеджеров он, как и все остальные настройки веб-вида, никакого значения не имеет, как и для приложений, способных осуществлять навигацию по папкам.
К тому же он не предохранит от прямого доступа в поддиректории, например в ту же самую папку Folder Settings, в которой без труда можно обнаружить наш пароль. Так что грамотный пользователь такую защиту обойдет минуты за две (а сисадмины, имеющие привычку пользоваться альтернативными менеджерами типа FAR или Windows Commander, и вовсе не заметят - прим. ред.), но как защита "от дурака" и от прочих неприятностей он вполне годится, да и написать более серьезный скрипт вам ничто не мешает.
Главное, что для такого трюка не требуется никаких программ - только две минуты свободного времени на настройку веб-вида!
Мелочь, а приятно
Если вы пробежитесь с помощью Проводника по разным папкам, то заметите еще одну небольшую, но приятную функцию веб-вида - отображение ссылок на часто используемые ресурсы прямо в информационной панели. Обычно это ссылки на папки My Documens, My Network Places и My Computer. Причем ссылки эти динамические и при выделении курсором какого-либо файла они пропадают, чтобы освободить пространство для "превьюшки" файла.
Стоит же щелкнуть мышью на пустом месте (для того, чтобы снять выделение файла), как ссылки эти снова восстанавливаются. К сожалению, при использовании стандартного шаблона вы теряете возможность пользоваться этой удобной функцией - она почему-то из него исключена. Но очень легко сделать так, чтобы на информационной панели постоянно присутствовали статические ссылки на самые востребованные папки или веб-сайты. Найдите в самом конце файла folder.htt такие строки:
<span id=Info>
%THISDIRPATH%
</span>
сразу после них вставьте:
<p>
<class=Links>
<a href="http://upgrade.computery.ru/">Upgrade</a>
<p>
<br>
- и в нашей экспериментальной папке вы увидите ссылку на сайт журнала Upgrade. Точно так же добавляются и ссылки на локальные папки и диски (<a href=file://C:\>Диск С:</a>). Оформить эти ссылки можно как угодно, даже поместить в таблицу - опять с помощью HTML.
В принципе, можно вернуть и динамические ссылки, но описание этой процедуры сюда уже не поместится, поэтому я предлагаю вам получить уже готовый мой собственный шаблон
folder.htt
(stnvidnoye.chat.ru/ Files/main_files/FOLDER.ZIP), в котором помимо динамических ссылок и парольной защиты есть и все остальные описанные здесь функции - включен предпросмотр медиа-клипов, видео и аудио воспроизводится в Windows Media Player 7, а файлы RealMedia - в RealPlayer.
Единственное ограничение этого шаблона заключается в том, что в папке, настроенной с его помощью, не отображаются комментарии, о которых шла речь на первом занятии. Так что на досуге можете заняться этим вопросом. Читайте также мои заметки внутри этого шаблона - возможно, я еще внесу туда какие-то изменения.
Впрочем, существует немало и других возможностей дать разгуляться фантазии при редактировании шаблона folder.htt. В частности, в самом начале этого файла после строки // THIS SCRIPT IS COMMON FOR ALL CUSTOM WEB VIEWS идет список переменных, среди которых нетрудно заметить и строковые, являющиеся, по сути, тем текстом, который отображается на информационной панели в различных ситуациях.
Например, при открытии какой-либо папки в верхней части информационной панели появляется строка: "Select an item to view its description", приглашающая выбрать какой-либо файл. При наличии определенной степени здорового юмора можно изменить значение отвечающей за эту строку переменной "var L_Prompt_Text" так, чтобы вместо нейтрального приглашения выводилось что-нибудь смешное - например, так: "Нижайше пресмыкаясь, система умоляет своего драгоценного повелителя указать перстом хоть на что-нибудь".
Но больше всего параметров, над которыми допускается поэкспериментировать, расположено чуть выше - сразу после строк
</head>
<style>,
где задаются стили нашего шаблона. В частности, владельцам больших мониторов я бы посоветовал увеличить ширину инфо-панели, изменив в строке, описывающей эту панель, -
#Panel {position: absolute; width: 200px; height: 100%; visibility: hidden}
- значение параметра "width". Все остальные строки этого раздела тоже более или менее понятны: например, ясно, что шрифт, которым выводится название папки, описан в строке "#FolderName", размер видеопроигрывателя - в ".Movie", размеры миниатюр графических файлов - в "#Thumbnail" и так далее.
На больших мониторах будет полезно вместе с инфо-панелью увеличить и размер эскизов.
Как видите, если хорошенько разобраться с веб-видом папок, то зайти можно очень далеко...
Ничто, например, не запрещает применить фреймы внутри окна Проводника! Просто надо сделать обычную веб-страничку с несколькими фреймами, назвать ее folder.htt, а в одном из фреймов задать отображение документа, содержание которого идентично исходному шаблону standard.htt - в нем и будут производиться операции с файлами. В остальные же фреймы вставляйте все, что душе угодно - кнопки, скрипты, бегущие строки, графику, анимацию - все, что как-то может быть вам полезно.
Если же вы хотите, чтобы изменения коснулись абсолютно всех папок на диске, то измените сам глобальный файл C:\Windows\Web\folder.htt, предварительно сделав его резервную копию. В этой же папке вы найдете и другие системные шаблоны, применяющиеся для настройки внешнего вида и оформления отдельных системных папок, несколько графических изображений, используемых в этих шаблонах, а также те самые четыре предустановленных шаблона, что предлагает мастер настройки веб-вида (см. врезку).
Редактируя их, можно радикально изменить лицо "виндов", вдоволь над ними поглумившись, или же добавить некоторые полезные и удобные функции. Очень рекомендую по максимуму поприкалываться над файлом C:\Windows\Web\safemode.htt - в нем запрограммирована заставка, которая отображается на активном Рабочем столе в случае сбоя оболочки Windows. Если скопировать такой файл знакомому "чайнику", то его будет ждать немалое потрясение, когда вместо очередного предложения восстановить Рабочий стол появится что-нибудь типа "А теперь пора попить пивка!" с картинкой соответствующего содержания.
О главном
Самым же важным и одновременно хуже всего документированным элементом шаблона веб-вида папки является объект FileList - его упоминание найдете в разделе стилей и в конце шаблона. Именно он отображает папки и файлы в правой части окна Проводника. К сожалению, с ним мало что можно придумать, просто если вы вдруг захотите полностью переписать "виндовый" шаблон, то не забудьте внедрить в него этот объект, иначе доступа к файлам не будет.
Правда, можно немного поиграть с его размерами, которые по умолчанию выставлены как 100% ширины и 100% высоты из-за чего панель с файлами занимает всю площадь правой части Проводника. Если же его размеры задать жестко, в пикселях, то в Проводнике окажется дополнительное место для размещения еще какого-либо управляющего элемента, графики или текста.
Если же задать размер в процентах, но так, чтобы FileList занимал не 100% высоты, а, допустим, 70%, то его размер по-прежнему будет изменяться вместе с изменениями размеров окна Проводника, при этом сохранится и свободный участок площади для опытов.
На медленных компьютерах, чтобы не загружать систему сопутствующими прибамбасами, можно пойти на такой трюк: оставить в шаблоне только один объект FileList, а остальной код добавить самостоятельно, сделав так, чтобы в Проводнике отображалось, например, несколько постоянно используемых ссылок.
Этому спартанскому идеалу ближе всего соответствует упрощенный шаблон C:\Windows\Web\starter.htt, в котором кроме FileList присутствует только отображение значка папки, но можно убрать и его, если удалить из HTML-кода все, что касается объекта FolderIcon.
Использование такого минималистского шаблона пригодится и в том случае, если вы будете делать шаблон с фреймами, в котором все нужные вам элементы управления создадите сами.
Значки
Ну что ж, мы провели огромную работу и использовали интеграцию Internet Explorer с операционной системой почти на всю катушку. Не хватает последнего штриха. Windows позволяет задавать для каждой папки индивидуальный значок, выделяющий ее среди прочих безликих собратьев.
Пока на диске всего пять системных папок имеют свой собственный значок (например, папка C:\My Documents\My Pictures). Почему бы таким же образом не подчеркнуть уникальность и нашей папки с музыкой? Помещаем в нее файл иконки, называющийся, скажем, "icon.ico", снова открываем файл desktop.ini и в раздел [.ShellClassInfo] добавляем строки:
IconFile=icon.ico
IconIndex=0
После сохранения изменений радуемся полученному результату. Старайтесь только, чтобы все такие значки имели разные названия, иначе Проводник их путает. Кстати, не обязательно копировать значок прямо в папку, иконку которой вы хотите изменить, не обязательно и использование ico-файла - можно просто указать путь к DLL-библиотеке с несколькими значками и задать идентификатор нужного значка "IconIndex".
Именно так и сделаны иконки системных папок, например, для папки My Pictures эти строки выглядят следующим образом:
IconFile=C:\Windows\System\mydocs.dll
IconIndex=-101
Помимо индивидуального значка можно назначить и всплывающую подсказку, появляющуюся при наведении курсора на папку, - для этого надо в этот же раздел поместить еще одну строку:
InfoTip=Это папка с моей любимой музыкой
Правда, управлять значками лучше всего не ручным редактированием файлов desktop.ini, а, например, с помощью программы Microangelo
(www.impactsoft.com/ muangelo/download/muadnld.html) - она добавляет в контекстное меню каждой папки новую команду "Appearance", воспользовавшись которой, вы за пару минут сделаете из стройных рядов одинаковых иконок разноцветный винегрет (главное - заранее позаботиться о нужном количестве оригинальных значков).
Эта программа способна менять и текст всплывающей подсказки. (Подробнее с программой Microangelo можно ознакомиться в Upgrade
# 21 (35).) Учтите только, что некоторые системные значки она поменять, увы, не сумеет - для этого лучше применить известную программу WinBoost 2001 Gold
(www.magellass.com), которая полностью восполнит этот пробел.
Интегрируемся?
Вот, собственно, и все, что я хотел рассказать о такой полезной и в то же время практически никем не используемой функции Windows Me, как настройка веб-вида папок. Консерваторам же, все еще использующим Windows 98, могу лишь подсказать, как включить предпросмотр медиа-файлов. Для этого надо изменить всего один параметр в уже известном файле C:\Windows\Web\folder.htt. В строке, начинающейся с "var wantMedia = false;" - поменяйте "false" на "true". Остальное же я предоставляю вам сделать самостоятельно.
Вообще, было бы замечательно, если бы пользователи и веб-дизайнеры наконец обратили внимание на эту особенность современных операционных систем, ведь точно так же можно настраивать и Windows 2000, и даже Windows XP, тем более что начиная с Internet Explorer 5.0 в качестве шаблона можно использовать XML-файлы, имеющие более мощный потенциал, нежели HTML. Но пока в интернете мы имеем горы обоев для Рабочего стола, всяческие заставки-скринсейверы и ни одного продвинутого folder.htt.
Кстати, ведь благодаря веб-интеграции на Рабочий стол можно помещать не только статичные графические файлы, но и HTML-документы со ссылками, Java-скриптами, объектами ActiveX - гораздо более функциональные и полезные, чем обычная графика.
При этом не нужны никакие "Талисманы", поглощающие половину ресурсов процессора ради нескольких анимированных кнопок на Рабочем столе, - все делается штатными средствами самой ОС.
DataFile |
brfcase.htt |
папка Портфель |
classic.htt |
шаблон "классический" |
controlp.htt |
папка Панель управления |
default.htt
|
Temporary Internet Files, Downloaded Program Files, Subscriptions, History |
deskmovr.htt |
активный Рабочий стол |
dialup.htt |
Удаленный доступ к Сети |
folder.htt |
глобальный файл (отвечает за оформление
всех обычных папок Windows) |
fsresult.htt |
поиск файлов |
ftp.htt |
обзор FTP-сервера |
imgview.htt |
папка My Pictures |
nethood.htt |
Сетевое окружение |
printers.htt |
Принтеры |
recycle.htt |
Корзина |
safemode.htt |
оформление активного Рабочего стола в случае сбоя оболочки Windows |
shedule.htt |
Назначенные задания |
standard.htt |
шаблон "стандартный" |
starter.htt |
упрощенный шаблон |
sysroot.htt |
корневая директория системного диска |
wiacam.htt, wiadev.htt, wiastream.htt |
камеры и прочие мультимедиа-устройства |
Может, восполним и этот пробел? Наверняка ведь среди наших читателей найдутся гораздо более квалифицированные программисты, чем я, скромный сисадмин. Жду писем!
Источник: http://www.computery.ru/upgrade/
|