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.