Пишу, по большей части, про историю, свою жизнь и немного про программирование.

HTA (HTML application)

После появления на свет WebICQ, я получил множество писем с просьбами рассказать, что такое HTA и WScript. О WScript как-нибудь в другой раз, а сегодня я расскажу о том что такое HTA.

HTA (или HTML Application) — так называемые «безбраузерные приложения», выполнение которых — одна из возможностей браузера Internet Explorer 5.0. С точки зрения пользователя, такая программа ничем (кроме, разве что, расширения) не отличается от любой другой: имеет заголовок окна, свою иконку, отображается в панели задач и т. п.

С точки зрения программиста, HTA — обычная Веб-страничка: для ее создания используются все те же HTML, CSS, JScript и VBScript. Единственное, что ее отличает от всего того, что можно увидеть на любом сайте, это наличие заголовочного тега (в общем случае он может отсутствовать) и полное отсутствие системы безопасности (как и в любом нормальном приложении).

Тег заголовка позволяет программисту управлять некоторыми параметрами созданного приложения. Выглядит он, как простой XML-тег, расположенный внутри тела программы (обратите внимание пробел перед «\>» обязателен!): <HTA:APPLICATION... />.

Параметры перечисляются внутри тега, например, так, как это показано ниже:

<HTA:APPLICATION ID="oHTA"
APPLICATIONNAME="myApp"
VERSION="1.0"
WINDOWSTATE="maximize" />

Хотя параметров довольно много (все они перечислены в Таблице 1), мне, например, очень не хватает еще двух: WIDTH и HEIGHT, которые позволили бы задавать размер окна, не вызывая методов JScript или VBScript.

Таблица 1

Параметр В JavaScript Назначение Значения
APPLICATIONNAME applicationName Имя приложения строка
BORDER border Тип бордюрa thin, dialog, none, thin
BORDERSTYLE borderStyle Стиль бордюра внутри HTA normal, complex, raised, static, sunken
CAPTION caption Наличие заголовка yes, no
commandLine Содержимое командной строки
CONTEXTMENU contextMenu Управляет наличием меню правой кнопки мыши yes, no
ICON icon Задает иконку приложения URL (строка)
INNERBORDER innerBorder Внутренний бордюр yes, no
MAXIMIZEBUTTON maximizeButton Управляет кнопкой «развернуть» yes, no
MINIMIZEBUTTON minimizeButton Управляет кнопкой «свернуть» yes, no
NAVIGABLE (только для IE 5.5) navigable Переход по ссылке произойдет в окне HTA no, yes
SCROLL scroll Наличие scroll bars yes, no, auto
SCROLLFLAT scrollFlat Управление стилем scroll bars no, yes
SELECTION selection Управляет возможностью выделения текста внутри HTA yes, no
SHOWINTASKBAR showInTaskBar Отображать ли в панели задач yes, no
SINGLEINSTANCE singleInstance Запретить запуск второго экземпляра? no, yes
SYSMENU sysMenu Управляет наличием системного меню yes, no
VERSION version Версия HTA строка
WINDOWSTATE windowState Начальный размер окна normal, minimize, maximize

Как видно из таблицы, все параметры приложения (большинство в режиме read-only) доступны из скриптовых языков. Что бы было понятно, как это делается, приведу небольшой пример для applicationName: oHTA.applicationName (oHTA — ID, заданный в заголовке).

Отсутствие системы безопасности означает, что разработчику предоставлена полная свобода доступа к ActiveX, а значит файловой системе и WScript. Кроме того, программист имеет возможность, при помощи атрибута APPLICATION, явно указать содержимое какого из внутренних фреймов может получить доступ к объектам приложения: <IFRAME SRC=content.htm APPLICATION=yes>.

Исходя из концепции безбраузерного приложения, Microsoft исключила из HTA функцию автозавершения (AutoComplete of form) и закрыла доступ к объекту external.

Более подробно о HTA (на английском языке) можно почитать на сайте Microsoft MSDN.