Приложения HTML. HTML-приложения

Мы надеемся, что помогли Вам решить проблему с файлом HTA. Если Вы не знаете, где можно скачать приложение из нашего списка, нажмите на ссылку (это название программы) - Вы найдете более подробную информацию относительно места, откуда загрузить безопасную установочную версию необходимого приложения.

Посещение этой страницы должно помочь Вам ответить конкретно на эти, или похожие вопросы:

  • Как открыть файл с расширением HTA?
  • Как провести конвертирование файла HTA в другой формат?
  • Что такое расширение формата файлов HTA?
  • Какие программы обслуживают файл HTA?

Если после просмотра материалов на этой странице, Вы по-прежнему не получили удовлетворительного ответа на какой-либо из представленных выше вопросов, это значит что представленная здесь информация о файле HTA неполная. Свяжитесь с нами, используя контактный формуляр и напишите, какую информацию Вы не нашли.

Что еще может вызвать проблемы?

Поводов того, что Вы не можете открыть файл HTA может быть больше (не только отсутствие соответствующего приложения).
Во-первых - файл HTA может быть неправильно связан (несовместим) с установленным приложением для его обслуживания. В таком случае Вам необходимо самостоятельно изменить эту связь. С этой целью нажмите правую кнопку мышки на файле HTA, который Вы хотите редактировать, нажмите опцию "Открыть с помощью" а затем выберите из списка программу, которую Вы установили. После такого действия, проблемы с открытием файла HTA должны полностью исчезнуть.
Во вторых - файл, который Вы хотите открыть может быть просто поврежден. В таком случае лучше всего будет найти новую его версию, или скачать его повторно с того же источника (возможно по какому-то поводу в предыдущей сессии скачивание файла HTA не закончилось и он не может быть правильно открыт).

Вы хотите помочь?

Если у Вас есть дополнительная информация о расширение файла HTA мы будем признательны, если Вы поделитесь ею с пользователями нашего сайта. Воспользуйтесь формуляром, находящимся и отправьте нам свою информацию о файле HTA.

HTML-приложения

Начиная с Internet Explorer 5.0 появилась возможность создавать HTML-приложения с любым пользовательским интерфейсом при помощи JavaScript или VBScript. Причем, созданное html-приложение будет запускаться вне браузера и ничем не будет отличаться от стандартных Windows-приложений.

Созданное приложение будет присутствовать на панели задач, иметь свое собственное окно, меню и значок. Плюс ко всему отпадает необходимость подтверждать использование ActiveX-компонентов (система защиты Internet Explorer предусматривает появление предупреждающих сообщений при попытке использования ActiveX в HTML-документах). Вы имеете полный контроль над системой, включая чтение/запись файлов, данных в реестре, управление процессами. Для создания такого приложения достаточно обычного Блокнота (или другой текстовый редактор).

Данные html-приложения должны иметь расширение *.hta . Простейший случай будет выглядеть так:

Моя программа

0 Then oShell.Run sCommandLine,1,0 End Sub

Данная процедура в качестве параметра получает идентификатор элемента, вызвавшего ее, выбирает нужную командную строку и запускает ее, если строку запуска удалось подобрать.

Методы и свойства класса FileSystemObject

Очень часто встречаются такие случаи, когда необходимо что-то создать, удалить, переместить или изменить на диске компьютера. Эту задачу позволяет решить класс FileSystemObject, предназначенный для работы с файловой системой.

Наиболее распространенная задача из операций с файловой системой - это чтение файла. Ниже представлена функция чтения текстового файла, которая в качестве параметра принимает путь к файлу, а отдает массив строк считанного файла.

Function ReadFile(sFileName) Set oFSO = CreateObject("Scripting.FileSystemObject") Set oInFile = oFSO.OpenTextFile(sFileName, 1, False, 0) sFileContent = oInFile.ReadAll oInFile.Close ReadFile = sFileContent End Function

Еще одна полезная функция - это проверка существования файла, например, перед запуском внешней программы или перед считыванием текстового файла. Входным параметром функции является путь к файлу, выходным - логическая переменная.

Function CheckFile(sFilePath) Set oFSO = CreateObject("Scripting.FileSystemObject") If oFSO.FileExists(sFilePath) Then CheckFile = True Else CheckFile = false End If End Function

Классы Windows Management Instrumentation

Windows Management Instrumentation (WMI) - это набор интерфейсов для управления операционной системой через специальные компоненты, причем как локально, так и по сети. Это очень богатый набор инструментов, с помощью которого можно выполнить любое действие в среде семейства Windows.

Наиболее простым и востребованным примером использования WMI является определение параметров дисплея пользователя для центрирования формы приложения на экране.

Function GetDisplayResolution() Set oWMIService = GetObject("winmgmts:\\.\root\cimv2") Set colItems = oWMIService.ExecQuery("Select * From Win32_DesktopMonitor") For Each oItem In colItems iHorizontal = oItem.ScreenWidth iVertical = oItem.ScreenHeight Exit For Next GetDisplayResolution = iHorizontal & ";" & iVertical End Function

Второй пример использования WMI также полезен и часто используется - это функция определения доступности компьютера в сети.

Function PingComputer(sComputer) Set oPing = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("SELECT" & _ * FROM Win32_PingStatus WHERE address = "" & sComputer & """) For Each oStatus In oPing If IsNull(oStatus.StatusCode) Or oStatus.StatusCode

Пример использования функций взаимодействия с операционной системой

Преобразуем наше приложение следующим образом: изменим текст формы, добавим все вышеописанные примеры, на форме разместим несколько кнопок для запуска заданий, в директории, где располагается файл HTA-приложения, создадим папку "MyHTA_files", в которой разместим несколько файлов:

  • text.txt- любой текстовый файл;
  • test.vbs- файл, содержащий только одну строку:MsgBox("Hello script!");
  • MyHTA.ico- любая иконка;
  • MyHTA.vbs- файл, содержащий все вышеописанные скрипты.

Листинг файла "MyHTA.hta"

Моё HTA-приложение

Моё HTA-приложение
Версия: X.X

" Процедура инициализации окна формы Sub WindowOnLoad Dim CurrentResolution " Размер окна iWidth = 800 iHeight = 600 " Получение текущего разрешения экрана CurrentResolution = GetDisplayResolution() " Изменение размера окна и его центрирование iLeft = (Split(CurrentResolution,";")(0) - iWidth) / 2 iTop = (Split(CurrentResolution,";")(1) - iHeight) / 2 Self.Focus() Self.resizeTo iWidth, iHeight Self.moveTo iLeft, iTop " Вывод версии приложения на форму Version_Div.InnerHTML = "Версия: " & oHTA.Version End Sub Sub RunApplication(sApplication) sCommandLine ="" Set oShell = CreateObject("Wscript.Shell") Select Case sApplication Case "CommandPrompt" sCommandLine = "%ComSpec%" Case "TestScript" If CheckFile(oShell.CurrentDirectory & "\MyHTA_files\Test.vbs") = True Then sCommandLine = "WScript """ & oShell.CurrentDirectory & _ "\MyHTA_files\Test.vbs""" Else MsgBox("Файл не найден") End If Case "TextFile" If CheckFile(oShell.CurrentDirectory & "\MyHTA_files\Test.txt") = True Then sCommandLine = "Notepad """ & oShell.CurrentDirectory & _ "\MyHTA_files\Test.txt""" Else MsgBox("Файл не найден") End If Case "TempDir" sCommandLine = "Explorer " & oShell.ExpandEnvironmentStrings("%Temp%") Case Else sCommandLine ="" End Select If Len(sCommandLine) > 0 Then oShell.Run sCommandLine,1,0 End Sub Function ReadFile(sFileName) Set oFSO = CreateObject("Scripting.FileSystemObject") Set oInFile = oFSO.OpenTextFile(sFileName, 1, False, 0) sFileContent = oInFile.ReadAll oInFile.Close ReadFile = sFileContent End Function Function CheckFile(sFilePath) Set oFSO = CreateObject("Scripting.FileSystemObject") If oFSO.FileExists(sFilePath) Then CheckFile = True Else CheckFile = false End if End Function Function GetDisplayResolution() Set oWMIService = GetObject("winmgmts:\\.\root\cimv2") Set colItems = oWMIService.ExecQuery("Select * From Win32_DesktopMonitor") For Each oItem In colItems iHorizontal = oItem.ScreenWidth iVertical = oItem.ScreenHeight Exit For Next GetDisplayResolution = iHorizontal & ";" & iVertical End Function Function PingComputer(sComputer) Set oPing = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery(_ "select * from Win32_PingStatus where address = "" & sComputer & """) For Each oStatus In oPing If IsNull(oStatus.StatusCode) Or oStatus.StatusCode 0 Then PingComputer = False Else PingComputer = True End If Next End Function

Итак, теперь мы имеем форму, в которой к каждой из кнопок привязано определенное действие. Чтобы оживить форму и сделать интерфейс более приятным, нам потребуется использовать таблицы стилей, а так же свойства объектов формы, которые мы будем менять динамически по мере возникновения новых событий формы.

Динамический интерфейс

Динамический интерфейс или интерфейс, меняющийся в зависимости от действий пользователя, реализуется при помощи DHTML. Реализация DHTML стоит а трёх "китах": непосредственно HTML, каскадных таблицах стилей (CSS) и языке сценариев (Java Script или Visual Basic Script). Эти три компонента DHTML связаны между собой объектной моделью документа (DOM), являющейся, по сути, интерфейсом прикладного программирования (API). DOM связывает воедино три перечисленных компонента, придавая простому документу HTML новое качество, - возможность динамического изменения своего содержимого без перегрузки страницы.

На самом деле мы уже использовали динамический интерфейс в предыдущих примерах - это изменение размера и положения формы при загрузке, а также вывод версии приложения на форму.

Пример создания динамического интерфейса

Итак, первое, что нам потребуется - это создать статическую структуру нашей формы. В нашем примере мы уже создали основу формы - таблицу. Теперь нам потребуется дополнить ее областями, которые будут принимать в себя динамические данные. Для этого изменим тело таблицы согласно схеме, показанной на рисунке.

Листинг файла "MyHTA.hta"

Моё HTA-приложение

Моё HTA-приложение
Добро пожаловать

Теперь, когда структура формы готова, необходимо создать таблицу стилей, которая и будет определять внешний вид всех объектов формы. Если вы уже заметили, из разметки формы пропали все атрибуты, отвечающие за отображение объектов - теперь все атрибуты определяются CSS-файлом "MyHTA.css". Этот файл таблицы стилей располагается в папке "MyHTA_files", и подключается командой

Листинг файла "MyHTA_files\MyHTA.css"

Body { background-color: buttonface; font-family: Tahoma; } table { height: 100%; width: 100%; } .Header_Row { height:40px; } .Content_Row { vertical-align: top; } #StaticMenu_Cell { width: 20%; text-align: center; } #StaticMenu_Cell input { width: 150px; margin: 2px 2px 2px 2px; } #DynamicContent_Cell { margin: 2px 2px 2px 2px; } #DynamicContent_Cell #DynamicContent_Div { text-align: center; } #DynamicContent_Cell #DynamicContent_Div .NormalLink { font-family: Tahoma; font-size: 10pt; color: black; cursor: default; vertical-align: text-bottom; text-align: left; padding-right: 20px } #DynamicContent_Cell #DynamicContent_Div .NormalLinkMouseOver { font-family: Tahoma; font-size: 10pt; color: Navy; text-decoration: underline; cursor: hand; vertical-align: text-bottom; text-align: left; padding-right: 20px } #DynamicContent_Cell #DynamicContent_Div .TextFile { font-family: Tahoma; font-size: 10pt; text-align: left; } .Footer_Row { height:30px; } #Version_Div { float: left; } #Button_Div { float: right; }

Последнее и самое сложное, что нужно сделать - это написать логику работы формы - сценарий на языке Visual Basic. Сценарий должен обрабатывать события формы и изменять ее интерфейс в зависимости от потребностей пользователя.

Первое событие, которое возникает в приложении - это загрузка формы. При этом событии сценарий должен получить от системы разрешение экрана, отцентровать форму и изменить ее размеры. Далее могут возникать события нажатия кнопок, при которых нужно определять нажатую кнопку, выполнять соотвествующую команду и перерисовать динамическую зону формы. Последнее событие - это нажатие на кнопку "Закрыть", при котором форма закрывает себя.

Если более подробно рассмотреть событие нажатия кнопки "Файл test.txt", то можно выделить несколько этапов логики:

  • проверка наличия файла на диске компьютера;
  • вывод в динамическую зону вопроса о том, как отобразить текстовый файл - создание двух новых объектов с обработкой событий "при нажатии";
  • обработка события выбранного отбъекта - открыть в блокноте или вывести на форму;
  • открытие тектового файла в блокноте, если выбрано это действие;
  • вывод в динамическую зону формы содержимого текстового файла, если выбрано это действие.
  • Сценарий-обработчик событий располагается в папке "MyHTA_files", и подключается командой в файле приложения "MyHTA.hta".

    Листинг файла "MyHTA_files\MyHTA.vbs"

    " Процедура инициализации окна формы Sub WindowOnLoad Dim CurrentResolution " Размер окна iWidth = 800 iHeight = 600 " Получение текущего разрешения экрана CurrentResolution = GetDisplayResolution() " Изменение размера окна и его центрирование iLeft = (Split(CurrentResolution,";")(0) - iWidth) / 2 iTop = (Split(CurrentResolution,";")(1) - iHeight) / 2 Self.Focus() Self.resizeTo iWidth, iHeight Self.moveTo iLeft, iTop " Вывод версии приложения на форму Version_Div.InnerHTML = "Версия: " & oHTA.Version End Sub Sub RunApplication(sApplication) sCommandLine ="" Set oShell = CreateObject("Wscript.Shell") Select Case sApplication Case "CommandPrompt" sCommandLine = "%ComSpec%" DynamicContent_Div.InnerHTML = "Командная строка открыта" Case "TestScript" If CheckFile(oShell.CurrentDirectory & "\MyHTA_files\Test.vbs") = True Then sCommandLine = "WScript """ & oShell.CurrentDirectory & _ "\MyHTA_files\Test.vbs""" DynamicContent_Div.InnerHTML = "Скрипт " & oShell.CurrentDirectory & _ "\MyHTA_files\Test.vbs" & " выполнен" Else DynamicContent_Div.InnerHTML = "Файл не найден" End If Case "TextFile" If CheckFile(oShell.CurrentDirectory & "\MyHTA_files\Test.txt") = True Then sDinamicContent = "Выберите режим отображения содержимого файла:- Открыть файл в блокноте" sDinamicContent = sDinamicContent & "- Отобразить здесь" DynamicContent_Div.InnerHTML = sDinamicContent Else DynamicContent_Div.InnerHTML = "Файл не найден" End If Case "TextFile_Form" sDinamicContent = "" & _ "Текстовый файл: " & _ oShell.CurrentDirectory & "\MyHTA_files\Test.txt" sDinamicContent = sDinamicContent & "Закрыть" sDinamicContent = sDinamicContent & "
    " & _ Replace(ReadFile(oShell.CurrentDirectory & _ "\MyHTA_files\Test.txt"),vbCrLf,"
    ") & "" DynamicContent_Div.InnerHTML = sDinamicContent Case "TextFile_Notepad" sCommandLine = "Notepad """ & oShell.CurrentDirectory & "\MyHTA_files\Test.txt""" DynamicContent_Div.InnerHTML = "Файл " & oShell.CurrentDirectory & _ "\MyHTA_files\Test.txt" & " открыт в блокноте" Case "TextFile_Close" DynamicContent_Div.InnerHTML = "Добро пожаловать" Case "TempDir" sCommandLine = "Explorer " & oShell.ExpandEnvironmentStrings("%Temp%") DynamicContent_Div.InnerHTML = "Папка временных файлов открыта" Case Else sCommandLine ="" End Select If Len(sCommandLine) > 0 Then oShell.Run sCommandLine,1,0 End Sub Function ReadFile(sFileName) Set oFSO = CreateObject("Scripting.FileSystemObject") Set oInFile = oFSO.OpenTextFile(sFileName, 1, False, 0) sFileContent = oInFile.ReadAll oInFile.Close ReadFile = sFileContent End Function Function CheckFile(sFilePath) Set oFSO = CreateObject("Scripting.FileSystemObject") If oFSO.FileExists(sFilePath) Then CheckFile = True Else CheckFile = false End If End Function Function GetDisplayResolution() Set oWMIService = GetObject("winmgmts:\\.\root\cimv2") Set colItems = oWMIService.ExecQuery("Select * From Win32_DesktopMonitor") For Each oItem In colItems iHorizontal = oItem.ScreenWidth iVertical = oItem.ScreenHeight Exit For Next GetDisplayResolution = iHorizontal & ";" & iVertical End Function Function PingComputer(sComputer) Set oPing = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery(_ "select * from Win32_PingStatus where address = "" & sComputer & """) For Each oStatus In oPing If IsNull(oStatus.StatusCode) Or oStatus.StatusCode 0 Then PingComputer = False Else PingComputer = True End If Next End Function Sub ccSleep(seconds) Set oShell = CreateObject("Wscript.Shell") sCommand = "%COMSPEC% /c ping -n " & 1 + seconds & " 127.0.0.1>nul" oShell.Run sCommand,0,1 End Sub здесь .

    Приложение "Консоль администратора"

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

    Данное приложение представяет из себя форму с возможностью выбора требуемой команды, полями ввода имени компьютера и пользователя, кнопки "Выполнить" и информационной строки, где отображается результат выполнения команд. Консоль имеет файл конфигурации "MyHTA.ini", в котором задаются параметры домена. Архив с примером программы можно загрузить .

    Виталий Бочкарев

    Внешние ссылки

    Секция внешних ссылок, то есть ссылок на другие сайты, к которым данный ресурс не имеет никакого отношения.. Кроме этого, владелец сайта сайт не несет никакой ответственности за доступность этих ресурсов и за их контент.

    HTA (HTML Application) - это простая технология, позволяющая создавать полезные приложения даже без знания серьезных языков программирования.

    Создать HTA-приложение можно, просто написав HTML-страницу и сохранив ее с расширением .hta , которое обрабатывается программой mshta.exe , её задача - обеспечить связь программы с браузером. Так как такие приложения используют движок браузера, то они объединяют в себе все их возможности - их объектную модель, разметку страницы (HTML), каскадные листы стилей (CSS), скрипты (VBS и JS). Также на такие приложения не накладывается ограничения безопасности - они работают как любой исполняемый файл.

    То есть при помощи HTML создается абсолютно любой пользовательский интерфейс, причем с минимальными усилиями и без каких-либо существенных ограничений, логика программы организуется кодом на Java Script или Visual Basic Script, а само приложение выходит за рамки браузера - программа на стадии выполнения ничем не будет отличаться от обычных оконных приложений для Windows - запущенное приложение будет присутствовать на панели задач, иметь собственные окно, меню и значок. Хотя здесь нужно оговориться: программа не будет видна среди запущенных приложений в диспетчере задач, единственное средство, которым можно контролировать запущенную программу - это процесс mshta.exe.

    В то время, как расширение .hta указывает системе как работать с приложением, новый тег и аттрибуты указывают окну, как себя вести будучи приложением. Этот тег предоставляет ограниченный набор аттрибутов, управляющих всем от стиля границы окна и до программной иконки и меню. Для создания функционирующего HTA, этот тег должен быть описан внутри тега HEAD .

    Элемент HTA:APPLICATION требует закрывающего тега.

    ... Так как тэг элемента HTA:APPLICATION является пустым, он также может быть закрыт использую следующий прием.

    При использовании вышеуказанного приема, прямому слэшу (/) должен предшествовать пробельный символ.

    Помимо управлением окном приложения, этот тег также дает возможность обращаться к свойствам приложения из скриптов, расположенных в коде HTA-приложения. Стоит заметить, что все свойства этого тега доступны только для чтения.

    Атрибут и свойство id

    Определяет идентификатор объекта - уникального имени внутри файла HTA-приложения.

    Атрибут и свойство applicationName

    Содержит имя приложения. Свойство не имеет значения по умолчанию.

    Будучи установленным в true , свойство singleInstance проверяет значение applicationName перед запуском экземпляра приложения. Чтобы проверка была успешной, значение applicationName должно быть уникальным. Можно использовать значение свойства applicationName для идентификации единственности запущенного приложения, независимо от адреса URL, используемого для доступа к нему.

    Атрибут и свойство border

    Содержит тип бордюра окна. Свойство border влияет на толщину бордюра и действительно только для окон HTA , у которых есть панель заголовка и сам заголовок. Устанавливая border в "None", вы убираете панель заголовка, иконку программы, и кнопки максимизирования и минимизирования. Это свойство может быть использовано совместно со свойством borderStyle . Возможные значения:

    Примечание

    Если не указать параметр BORDER или указать BORDER="thick" , то размеры окна программы можно будет изменять при помощи мыши, в остальных же случаях, - размеры окна изменить нельзя.

    Атрибут и свойство borderStyle

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

    Атрибут и свойство caption

    Определяет, будет ли в окне HTML приложения отображаться панель заголовка. Заголовок приложения отображается только тогда, когда свойство caption установлено в "Yes". Отключение свойства caption также отключит кнопки "Свернуть", "Развернуть" и программную иконку. В этом случае нужно не забыть предоставить альтернативный способ выхода из приложения, например, кнопку "Закрыть" на форме приложения, вызывающую метод Window.Close . Возможные значения:

    Свойство commandLine

    Строка, которая содержит путь и параметры командной строки, которые использовались для запуска HTA-приложения. Если HTA-приложение было запущено с использованием HTTP протокола, свойство CommandLine содержит пустую строку.

    Атрибут и свойство contextMenu

    Определяет, появляется ли контекстное меню при нажатии на правую кнопку мыши. Возможные значения:

    Атрибут и свойство icon

    Определяет путь к файлу иконки, используемой в HTML приложении. HTA использует системную иконку, если значение не определено. Атрибут Icon распознаёт стандартные файлы с расширением.ico , содержащие изображение размером 32x32 пикселя, а также успешно распознаёт первую иконку из файлов "*.exe", "*.icl" (библиотека иконок), "*.dll", и "*.ocx".

    Атрибут и свойство innerBorder

    Определяет, отображается ли внутренняя 3-D граница. Возможные значения:

    Атрибут и свойство maximizeButton

    Определяет, отображается ли кнопка "Развернуть" на панели заголовка окна HTML приложения. Чтобы отображались кнопки "Свернуть" и "Развернуть", окно должно иметь панель заголовка (атрибут caption). Возможные значения:

    Атрибут и свойство minimizeButton

    Определяет, отображается ли кнопка "Свернуть" на панели заголовка окна HTML приложения. Чтобы отображались кнопки "Свернуть" и "Развернуть", окно должно иметь панель заголовка (атрибут caption). Возможные значения:

    Атрибут и свойство navigable

    Определяет, в каком окне будут открываться загружаемые документы. Возможные значения:

    Атрибут и свойство scroll

    Определяет, будут ли отображаться полосы прокрутки. Возможные значения:

    Атрибут и свойство scrollFlat

    Определяет, в каком виде будут отображаться полосы прокрутки. Возможные значения:

    Атрибут и свойство selection

    Определяет, может ли содержимое документа быть выбрано мышкой или с помощью клавиатуры. Значение "No" запрещает появление контекстного меню и присвоение атрибуту contextMenu значения "Yes" не произведёт никакого эффекта. Возможные значения:

    Атрибут и свойство showInTaskBar

    Определяет, будет ли HTML приложение появляться на панели задач Windows. Возможные значения:

    Атрибут и свойство singleInstance

    Определяет, может ли быть запущенно больше одного экземпляра HTML приложения одновременно. Возможные значения:

    Атрибут и свойство sysMenu

    Определяет, отображается ли системное меню в HTML приложении. Системное меню HTA обозначается программной иконкой в левом углу панели заголовка. Системное меню HTA показывает все команды, входящие в стандартное системное меню Windows, включая "Восстановить", "Переместить", "Размер", "Свернуть", "Развернуть", и "Закрыть". Возможные значения:

    Атрибут и свойство version

    Определяет номер версии HTML приложения.

    Атрибут и свойство windowState

    Определяет начальные размеры окна HTML приложения. Возможные значения:

    Пример

    В этом маленьком примере объединены объектная модель, разметка страницы (HTML), каскадный лист стилей (CSS), Javascript и элементы WSH.

    В папке "MyHTA_files" размещаются следующие файлы:

    • text.txt- любой текстовый файл;
    • test.js- файл, содержащий только одну строку: WScript.Echo ("Hello script!");
    • MyHTA.ico - любая иконка;
    • MyHTA.css - файл стилей;
    • MyHTA.js- файл, содержащий все скрипты.
    Листинг файла "MyHTA.hta" Моё HTA-приложение
    Моё HTA-приложение
    Добро пожаловать
    Листинг файла "MyHTA_files\MyHTA.js" // Процедура инициализации окна формы function WindowOnLoad () { var iWidth = 800, iHeight = 500; // Размер окна // Изменение размера окна и его центрирование var iLeft = (screen.availWidth - iWidth) / 2; var iTop = (screen.availHeight - iHeight) / 2; focus(); resizeTo (iWidth, iHeight); moveTo (iLeft, iTop); // Вывод версии приложения на форму Version_Div.innerHTML = "Версия: " + oHTA.Version; } var attributes = ["id","", "applicationName","", "border","Thick", "borderStyle","Normal", "caption", "Yes", "commandLine","Yes", "contextMenu","", "icon","", "innerBorder","Yes", "maximizeButton","Yes", "minimizeButton","Yes", "navigable","No", "scroll","Yes", "scrollFlat","No", "selection","Yes", "showInTaskBar","Yes", "singleInstance","No", "sysMenu","Yes", "version","", "windowState","Normal" ]; function RunApplication(sApplication) { var sCommandLine = ""; var oShell = new ActiveXObject("WScript.Shell"); switch (sApplication) { case "CommandPrompt": sCommandLine = "%ComSpec%"; DynamicContent_Div.innerHTML = "Командная строка открыта"; break; case "TestScript": if (CheckFile(oShell.CurrentDirectory + "\\MyHTA_files\\Test.js")) { sCommandLine = "WScript "" + oShell.CurrentDirectory + "\\MyHTA_files\\Test.js""; DynamicContent_Div.innerHTML = "Скрипт " + oShell.CurrentDirectory + "\MyHTA_files\Test.js" + " выполнен"; } else DynamicContent_Div.innerHTML = "Файл не найден"; break; case "TextFile": if (CheckFile(oShell.CurrentDirectory + "\\MyHTA_files\\Test.txt")) { DynamicContent_Div.innerHTML = "Выберите режим отображения содержимого файла:
      " + "" + ""; } else DynamicContent_Div.innerHTML = "Файл не найден"; break; case "TextFile_Form": DynamicContent_Div.innerHTML = "Текстовый файл: " + oShell.CurrentDirectory + "\\MyHTA_files\\Test.txt" + "Закрыть" + "" + ReadFile(oShell.CurrentDirectory + "\\MyHTA_files\\Test.txt") + ""; break; case "TextFile_Notepad": sCommandLine = "Notepad "" + oShell.CurrentDirectory + "\\MyHTA_files\\Test.txt""; DynamicContent_Div.innerHTML = "Файл " + oShell.CurrentDirectory + "\\MyHTA_files\\Test.txt" + " открыт в блокноте"; break; case "TextFile_Close": DynamicContent_Div.innerHTML = "Добро пожаловать"; break; case "TempDir": sCommandLine = "Explorer " + oShell.ExpandEnvironmentStrings("%Temp%"); DynamicContent_Div.innerHTML = "Папка временных файлов открыта"; break; case "Attributes": var s = "Атрибуты (Свойства)"; for (var i=0; i < attributes.length; i+=2) s += ""+ attributes[i]+ " = " + (oHTA] || attributes) + "
      "; DynamicContent_Div.innerHTML = s + ""; break; case "default": sCommandLine =""; break; } if (sCommandLine.length > 0) oShell.Run (sCommandLine,1,0); } function ReadFile(sFileName) { var oFSO = new ActiveXObject("Scripting.FileSystemObject"); var oInFile = oFSO.OpenTextFile(sFileName, 1, false, 0) var sFileContent = oInFile.ReadAll(); oInFile.Close(); return sFileContent; } function CheckFile(sFilePath) { var oFSO = new ActiveXObject("Scripting.FileSystemObject") return oFSO.FileExists(sFilePath) ? true: false; } Листинг файла "MyHTA_files\MyHTA.css" body { background-color: buttonface; font-family: Tahoma; } h1 { font-size: 18px; margin: 0px;} table { height: 100%; width: 100%; } .Header_Row { height:40px; } .Content_Row { vertical-align: top; } #StaticMenu_Cell { width: 20%; text-align: center; } #StaticMenu_Cell input { width: 150px; margin: 2px; } #DynamicContent_Cell { margin: 2px; } #DynamicContent_Cell #DynamicContent_Div { text-align: center; } .NormalLink { font-family: Tahoma; font-size: 10pt; color: navy; cursor: pointer; text-align: left; padding-right: 20px } .NormalLink:hover { color: red; } #DynamicContent_Cell #DynamicContent_Div .TextFile { font-family: Tahoma; font-size: 10pt; text-align: left; margin-top: 10px; } .Footer_Row { height:30px; } #Version_Div { float: left; } #Button_Div { float: right; } .attr { text-align: left; font-size: 10pt; margin-left:20px; }