HTML Application

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
HTML Application (HTA)
Расширение .hta[1]
MIME-тип application/hta[2]
Разработчик Майкрософт
Тип формата формат файла
Расширен из .html
Сайт msdn.microsoft.com/en-us…

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

Так как HTA поддерживают исполнение сценариев, они могут являться носителем вредоносного кода.

Для запуска HTA предназначена программа mshta.exe, в свою очередь использующая недокументированную функцию RunHTMLApplication из библиотеки mshtml.dll[3]. Так как обычно в системных настройках mshta.exe сопоставлена расширению .hta, то для того, чтобы файл с документом HTML открывался как HTA, достаточно сохранить его с этим расширением.

Настройка поведения и внешнего вида окна HTA

[править | править код]

Для настройки поведения и внешнего вида окна HTA введён нестандартный элемент разметки HTA:APPLICATION, который может быть расположен в разделе HEAD документа. Также для фреймов в HTA введён атрибут APPLICATION для задания того, распространяются ли на документ загруженный во фрейм права HTA или (по умолчанию) настройки безопасности Internet Explorer.

Атрибуты элемента HTA:APPLICATION и свойства связанного с ним объекта DOM

[править | править код]
Параметр Обозначение Значение(я)
applicationName идентификатор исполнения HTA-документа /* name */
border вид обрамления окна thin, dialog, none, thick
borderStyle стиль обрамления окна complex, normal, raised, static, sunken
caption наличие заголовка окна yes/no
commandLine командная строка, с которой было запущено приложение: путь к приложению и его аргументы (только свойство)
icon значок окна, в формате ICO (32x32) /* path */
maximizeButton наличие кнопки «восстановить» yes/no
minimizeButton наличие кнопки «свернуть» yes/no
showInTaskbar отображение документа в панели задач Windows yes/no
windowState исходный размер окна normal, minimize, и maximize
innerBorder внутренняя граница окна yes/no
navigable определяет открытие ссылки в новом окне или родительском yes/no
scroll наличие полосы прокрутки yes/no
scrollFlat 3D-вид полосы прокрутки yes/no
singleInstance невозможность открытия других окон с тем же значением applicationName yes/no
sysMenu наличие системного меню и кнопок управления окном в заголовке окна yes/no
contextMenu контекстное меню, вызываемое правой кнопкой мыши yes/no
selection разрешение выделения текста в HTA-окне yes/no
version версия HTA /* version */

Простой статичный пример HTA

[править | править код]

Приложение отображает статичное содержимое с установленными графическими атрибутами окна.

<html>
 <head>
  <HTA:APPLICATION ID="oHTA"
   APPLICATIONNAME="WMPTour"
   BORDER="thin"
   BORDERSTYLE="normal"
   CAPTION="no"
   maximizeButton="no"
   minimizeButton="no"
   ICON="img/wmptour.ico"
   SHOWINTASKBAR="no"
   SINGLEINSTANCE="yes"
   SYSMENU="yes"
   VERSION="1.0"
   WINDOWSTATE="maximize"
  />
  <meta charset="utf-8">
 </head>
 <body>
  <p>Текст страницы HTA-документа. Для выхода нажмите «Alt»+«F4»!</p>
 </body>
</html>


Классический пример «Hello world!»

[править | править код]

Пример классической программы, выводящей приветствие при нажатии на кнопку.

<html>
 <head>
  <title>HTA Test</title>
  <HTA:APPLICATION 
   APPLICATIONNAME="HTA Test"
   SCROLL="yes"
   SINGLEINSTANCE="yes"
   WINDOWSTATE="maximize"
  />
 </head>
 <body>
  <script type="text/VBScript" language="VBScript">
   Sub TestSub
    Msgbox "Hello, world!!!"
   End Sub
  </script>
  <input type="button" value="Run Script" name="run_button"  onClick="TestSub()">
 </body>
</html>

Пример взаимодействия с ОС Windows

[править | править код]

Приложение отображает название и версию операционной системы.

<html>
 <head>
  <title>Operating System Version</title>
  <HTA:APPLICATION 
   APPLICATIONNAME="Operating System Version"
   SCROLL="yes"
   SINGLEINSTANCE="yes"
  />
 </head>
 <body style="font:14 pt arial; color:white; filter:progid:DXImageTransform.Microsoft.Gradient (GradientType=1, StartColorStr='#000000', EndColorStr='#0000FF')">
  <script type="text/VBScript" language="VBScript">
   Sub GetOSVersion
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Set colOperatingSystems = objWMIService.ExecQuery ("Select * from Win32_OperatingSystem")
    For Each objOperatingSystem in colOperatingSystems
     Msgbox objOperatingSystem.Caption & " " & objOperatingSystem.Version
    Next
   End Sub
  </script>
  <p>Нажми на кнопку - получишь результат!</p>
  <input type="button" value="Operating System" name="run_button"  onClick="GetOSVersion()">
 </body>
</html>

Примечания

[править | править код]
  1. Introducing HTML Applications: DHTML Goes out of the Browser (англ.)Microsoft.
  2. The Web Deployment Model // Introduction to HTML Applications (HTAs)
  3. Klaus Jochem. Poweliks – Command Line Confusion (англ.). This is Security :: by Stormshield (20 августа 2014). — «Even if not documented, the actual RunHTMLApplication can be inferred from the call made by c:\windows\system32\mshta.exe (the application dedicated to launch an .hta file)…» Дата обращения: 5 февраля 2019. Архивировано 7 февраля 2019 года.