Портал г.Новоселица Черновицкой области, Украина; Портал м.Новоселиця Чернівецької області, Україна

Изучаем HTA на примере

(скрипты как программы)

by dnepr

Скрипты в работе

История.

Скрипты...

Вначале я относился к ним, как к недоделанным языкам программирования. Сейчас я полностью изменил свое мнение, так как с каждым разом скрипты помогают мне решать задачи.

Думаю, помните *.bat файлы в DOS. И иногда пользуетесь: запустить что-то, скопировать автоматом.

Я знал, что *.vbs, *.js - то же самое, что и *.bat, но программировать их труднее - нужно знать или VBScript, или JScript. VBScript я освоил быстро - на основе VBA для MS Office. И вдруг оказалось, что я, не имея установленной оболочки программирования, могу делать программки да хоть в NotePad (Блокноте)! Вау! Прибалдел, чеснояё. Сразу же сделал программку, автоматизирующую кое-какие специфические отчеты, формирующую письмо, оставляющую логи.

Вторым вопросом, беспокоившим меня, являлись диалоги. Кто помнит INPUT, тот знает, какой это детский сад. А в диалогах мы и переключатели имеем, и кнопки, и меню, и наглядность. Начал рассматривать скриптовые возможности (а точнее, возможности подключения объектов) для конструирования форм - и нарвался на *.hta. Понял, что это оно. Скрипты + html-обрАзная форма.

Перспективы HTA в моей работе.

HTA - HTML Applications. Тот, кто знает возможности VBScript или JScript, понимает, что основные конструкции и файловая система - у нас в руках. Тот, кто знает ООП (объектно-ориентированное программирование), понимает, что управление Word-ом, Excel-ем, многими другими приложениями - тоже у нас в руках. И тот, кто знает HTML (перевести?), понимает, что всю эту компанию мы можем классно оформить и заставить пахать. Вот что значит - HTA.

После этого начинаешь понимать, что многие "утилиты" из www.freeware.ru - просто мусор.

Этой страничкой я попытаюсь аргументировать свое мнение о том, что HTA - это инструмент, который поможет сэкономить время. Правда, при создании потратится тоже немало времени, но в этом и есть наша задача - уметь определять наиболее эффективные пути достижения цели. Можно даже сказать: "А кто быстрее решит эту задачу?"

Пример.

Давайте попробуем это показать на примере скрипта, который бы помог нам оценивать загаженность наших дисков: какие папки сколько места занимают. Как в Total Commander при нажатии на ALT+SHIFT+ENTER.

Начинаем. И это будет версия 1.1.

Диалог.

Создаем файл sizer.hta. Кто только начинает: создадим текстовый документ, после чего его переименуем, подтвердив Виндам изменение расширения.

Создадим структуру документа HTML. Чтобы не описывать тэги, предлагаю скачать уже готовый файл и полюбоваться в нем Блокнотом.

Создаем текстовое поле для пути папки. К изменению поля привязываем процедуру рисования диаграммы и отобразим все это графически. Чем? Да чем угодно. Можно таблицей, можно, например, списком, маркированным.

Тир-р-р-ь-ям...Пир-р-р-ь-ям... Готово.

Оформление.

К примеру, наш элемент списка должен показывать собой размер. Ищем самую большую папку - это будут наши 100%. Остальные - в процентном отношении.

Раскраски, то, се, - это кому как захочется. Вид - любой, это же HTML.

Размер файла - 3 кило.

Примечание.

Если это все перевести на JScript (что предпочтительней и оптимальней), данный код надо проверить на верхний регистр, что важно в JScript. Но это - отдельная статья, под названием "Не пиши по привычке большие буквы после точки. старайсяПисатьТак.иВсеБудетХорошо"

Продолжим. И это - версия 1.2.

Я же не настолько трудолюбив, чтобы вписывать пути! Первый век на дворе. Поэтому дополняем скрипт навигацией.

Размер файла - 6 кило.

Навигация.

Спецам: как, думаете, удобнее будет - создать из текущего пути список (как в окнах открытия/сохранения) или составную ссылку (как на www.filesearch.ru)? Или, может, а-ля нортона? А давайте и то, и другое.

Тир-р-р-ь-ям...Пир-р-р-ь-ям...Полдня... Готово.

Теперь изменение пути в любом месте заставляет реагировать все наши управляющие путем элементы. Это ведь просто: элемент, который мы потревожили, в себе содержит новый путь (трудно, что ли, внести в value путь?), на основе которого и формируются элементы. Итог: можно выбрать папку из списка, можно вписать путь в строку, можно щелкнуть на ссылку папки (причем, перепрыгивая через уровни), и - изюминка: можно щелкнуть на графическое отображение папки, а можно выйти и на предыдущий уровень. Чем не Нортон?

Навигация окончена.

Продолжим. И это - версия 1.3.

Командная строка. Вот в чем вопрос. Тогда программка не будет открываться с корня C: и считать нам тута. Итак, при открытии добавляем проверку, а нет ли у нас тут командной строки с параметрами? Ну, если хозяин поленился, то просчитаем ему весь C:, не пожалеем. (Ладно, ладно - запустим автопросчет только при наличии команды).

Размер файла - 7 кило.

Продолжим. И это - версия 1.4.

Теперь - действия.

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

Размер файла - 7 кило.

Показать результат?

Так давайте посмотрим, что получилось, какой вид всего этого. Скриншот (снимок экрана) - весит много, я уж лучше смоделирую как HTML.


C:\WINDOWS

При нажатии на размер открывается Проводник.

Это модель, а не реальный вид. Реальный вид можете посмотреть уже у себя.

Перспективы программы.

...а что, если добавить картинки? На предыдущую папку - зеленый крючок, сама папка - folder.ico. Фон выбрать...

...а что, если сделать настройку? Например, высота строки, ее цвет, размер шрифта. Минимальный отображаемый размер...

Все мы понимаем, что на зачем оно нужно. Зато - скрипт! Open Source! Захотим - разукрасим, захотим - добавим функций. Люблю свободу, люблю свои силы.

Таки меня достало. Скины. И это - версия 1.5

Скины - шкурки, в которые мы одеваем программу. И она становится разноцветной, радующей наш ламерский глаз. Вах-вах-вах!

Идея состоит в следующем: все оформление программы выводим в файл стилей - CSS (Cascading Style Sheets). А внутри ставим переключатель, который состоит из названий этих файлов.

Итог: каждый файл CSS указывает, какие картинки где использовать, какие цвета. Изменение вида - сразу же, не отходя от кассы, не выходя из программы.

На шару я поискал пару-другую текстур (вернее, 15), расположил их по разным папкам (для порядка) и клонировал 5 штук файлов CSS, разница внутри которых - всего-то в имени папки.

Создание механизма переключения заняло около часа (к нужному почитал еще парочку функций для самообразования), подбор картинок - еще 30 минут. Посмотрел - самому понравилось, процентов на 80. Доводить стили до конца - да ну его. Все равно они пока не запоминаются (хотя стиль по умолчанию можно задать внутри, в теге LINK). Полюбуйтесь.

Размер файла - 8 кило. Но - осторожней, из-за этих пяти стилей общий размер потяжелел на 110 кило - 15 картинок, все-таки.

Стили - это вообще: сила для оформления. Если кое-какие элементы назвать уникальными именами, то именно эти уникумы можно оформить по особому. Например, самые "жирные" папки отмечать иначе. Постойте, вот соберусь - натыкаю картинок к элементам!

И что, это - все? Нет. Повышаем производительность. И это - версия 1.6

Я пользуюсь Total Commander-ом, а не Проводником. Попробовать бы открыть нужную папку в нем... Посмотрел help к тоталу, "изучил" командную строку, нашел, что искал. Использовал метод Run объекта WSH Shell, чем можно запускать все остальное. Но столкнулся с проблемой: а где искать Total Commander? Есть три варианта: в Program Files, в c:\TotCmd, или еще где (как у меня - в папке программ, не требующих инсталяции). Иначе и не сработает ведь. Ну, тогда я вывел путь на выбор пользователю. При необходимости придется пока залезть во внутрь HTA и ручками поправить путь (я оставил свой), а также и установить программу, запускающуюся по умолчанию при щелчке на ссылке (параметр checked). Можно, наверное, и Far добавить.

Работает. Размер файла - 9 кило. (не забывайте о 100 кило скинов).

Конечно, решение грубовато. Самому не нравится. Лезть в файл, поправлять... А где искать Total Commander? Кто-то скажет? В реестре? Лично у меня он работает из любого места, и в реестре этого "места" нет.

Но не в этом дело. Вы просто гляньте, что получается из текстового файла! Я пользуюсь Windows-ом с 96-го года, и только сейчас, когда Windows 98 отбрасывает коньки, я узнаю, что еще тогда в нем был такой инструмент. (Правда, в 95-ом его нужно еще догружать).

А если я еще туда Flash-а накидаю? А если - XML?