Редактор hta: HtaEdit — HTA Editor with built-in Debugger – Безбраузерные приложения на Javascript (HTA) / Habr

Содержание

Применение HTA | Windows IT Pro/RE

Джим Тернер

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

Использование страниц HTML вполне позволяло решать мои задачи, но через некоторое время появились исправления для Microsoft Internet Explorer (IE) и пакеты обновлений Windows, которые нарушили привычный ход работы. После установки этих исправлений и пакетов обновлений мои сценарии стали не такими удобными, как раньше, когда можно было просто запустить сценарий двойным щелчком мыши и сразу начинать вводить данные. Теперь перед тем, как начать ввод, требовалось утвердительно ответить на серию приглашений системы безопасности, иначе страница отказывалась принимать вводимые пользователем данные. Надо было что-то предпринять с тем, что теперь именуется активным контентом - в основном, сценариями и компонентами ActiveX в коде HTML. Кроме того, моими сценариями пользовались и другие администраторы, и мне надоели звонки и электронные сообщения из-за подобных неувязок.

Решение этой проблемы пришло ко мне, когда я в первый раз запустил новый Scriptomatic 2.0. Одно из приложений меня очень заинтересовало. Оно было сделано очень стильно, но, главное, оно выполнялось без каких-либо вопросов со стороны подсистемы безопасности. Я был поражен, что можно сделать с помощью интерфейса HTA (HTML Application - приложение HTML).

Основы HTA

Сценарии HTA, появившиеся впервые в IE 5.0, были одно время достаточно популярными. Но, к сожалению, когда я начинал разрабатывать сценарии администрирования для Windows NT, я ничего не слышал и не читал о них. По сути, сценарий HTA представляет собой обычную страницу HTML с расширением .hta, но при этом сценарии HTA не подвержены строгим ограничениям и принудительным мерам безопасности, применяемым к страницам HTML.

Создание HTA требует определенных навыков написания сценариев. Как правило, программирование в HTML используется для создания экранных форм ввода, при этом программы на языке VBScript вставляются в код страницы HTML. Обычно все сводится к тому, чтобы ввести в форму ввода данных кнопку, которая генерирует событие

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

Если вы новичок в программировании на языке HTML (как вначале это было со мной), вам понадобится совершить некоторое исследование ресурсов MSDN (Microsoft Developer Network). Там имеется множество разнообразных примеров и ссылок, и, затратив несколько дней, вы сможете создавать действительно полезные сценарии HTA.

Хотя овчинка стоит выделки, раскапывание в MSDN нужных ссылок представляет собой непростую задачу, а потом придется еще потратить много времени и усилий для написания сценария HTA в редакторе Notepad. Сберечь время и продвинуться в обучении позволит инструментарий Web development package. Лично я воспользовался пробной версией Microsoft FrontPage, которую мне дали на каком-то мероприятии Microsoft, так что я установил эту версию и поработал с нею.

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

Хочу сразу оговориться, я не рекламирую Microsoft FrontPage, просто в тот момент именно это средство оказалось у меня под рукой.

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

Анализируем сценарий HTA

На Рисунке 1 показан основной сценарий HTA, а на Листинге 1 - код, который создает этот сценарий. В коде HTML реализуется простая структура из элементов, определяемых тегами. Большинство тегов являются парными. Тег начинает элемент, а тег имя тега> заканчивает этот элемент.

Как видно из Листинга 1, тег начинает HTA, тег является его окончанием. Далее следует первый элемент информации о документе. В этом примере заголовок формуляра для ввода и элементы окна находятся между тегами

и . Элемент HTA:APPLICATION (приложение HTA), который показывает фрагмент A на Листинге 1, определяет вид формы для ввода данных. В этом случае настройки элемента HTA:APPLICATION задают окно пользовательского интерфейса, в котором используется тонкая граница, параметр стиль границы задается как sunken, кнопки Minimize и Maximize активизированы, и блокируются линейка прокрутки и значок приложения, поэтому они не появляются в панели задач.

При использовании атрибутов CAPTION и SYSMENU следует быть внимательным. Если установить их неправильно, то форму будет невозможно закрыть. Значение атрибута CAPTION равное No, исключает строку заголовка окна приложения. Если еще установить атрибут SYSMENU равным No, то будут исключены кнопки Minimize, Maximize и Close. Так что, решив установить атрибуты CAPTION или SYSMENU равными No, убедитесь в наличии кнопки Close на вашей странице.

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

Фрагмент B в Листинге 1 показывает элемент сценария HTA, который начинается тегом . Далее следует строка language= attribute, где attribute определяет язык для создания сценария, в рассматриваемом случае это VBScript. В этом примере HTA, элемент сценария содержит простую подпрограмму на языке VBScript, которая выполняется, когда пользователь щелкнет по кнопке для активизации сценария Push this button to run script. Больше ничего особенного, но можно скопировать любую часть этого кода VBScript, которая находится между тегами , и быстро получить работающий сценарий.

Последний раздел в Листинге 1 начинается тегом

, а заканчивается тегом . Этот элемент содержит код HTML, который создает форму, куда пользователь вводит данные в поля и активизирует кнопки. В примере HTA на Рисунке 1 есть два поля для ввода данных: поле для ввода обычного текста и поле для ввода текста пароля, который скрывает любой текст, вводимый пользователем. Есть еще две кнопки: одна запускает код на языке VBScript, другая закрывает это приложение.

Рассмотрим внимательнее элемент body. Фрагмент C показывает код, который создает поле для обычного текста на Рисунке 1. Здесь тег

начинает новый параграф, а тег

заканчивает его. Теги и используются для задания начертания, размера и цвета текста. Если определение этих параметров не нужно, и вы хотите воспользоваться стилем текста по умолчанию, то это будет гарнитура Times New Roman, цвет черный, размер шрифта 3. Надо сказать, размеры шрифтов отличаются от обычных шрифтов, которые используются, например, в Microsoft Word. В HTML можно задать семь размеров (от 1 до 7) с помощью size= attribute, причем размер 1 будет самым маленьким, а размер 7 самым крупным. Даже если HTA использует размер по умолчанию, то код во фрагменте C устанавливает размер шрифта на 3 для слов в текстовом поле (Text box) и слов Use a text box for most any type of input (Воспользуйтесь текстовым полем для большинства типов ввода) для демонстрации.

Элемент ввода определяет поле ввода, куда пользователь может вводить данные. Равенство type= attribute определяет тип поля ввода (например, поле для обычного текста, поле для пароля, обычная кнопка, переключатель). В этом случае вы создаете поле для обычного текста (type="text"), которое имеет имя T1 (name="T1") и размер этого поля равен 20 символам (size="20"). Причем значение

T1.value означает, как вы ссылаетесь на это текстовое поле в вашем коде на языке VBScript. В отличие от большинства тегов тег не имеет концевого тега.

Код для поля ввода текста пароля имеет тот же формат, что и код для поля ввода обычного текста. Однако в этом случае, вы указываете "password", а не "text" в равенстве type= attribute, в этом случае любой текст, вводимый пользователем, будет скрытым.

Фрагмент D показывает код, который создает кнопку Push this button to run script для запуска сценария и кнопку выхода Exit. Обе кнопки имеют тип ввода "button" (кнопка). Обе кнопки также имеют атрибут ввода, который называется onclick. Атрибут onclick устанавливается для имени подпрограммы, метода или другого кода, который должен активизироваться при щелчке мышью по кнопке. Для кнопки Push this button to run script

, устанавливается onclick для подпрограммы showsetting (показать настройки) - см. фрагмент B в Листинге 1. Эта подпрограмма показывает текст, который пользователь вводит в поле Text box и в поле Password box. Текст, который пользователи вводят в поле Password, будет отображаться в незашифрованном тексте. Атрибут onclick кнопки выхода устанавливается на метод self.close (автоматического закрывания). Этот метод непосредственно закрывает HTA. Здесь Self относится к текущему открытому окну.

Возможности безграничны

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

Приложения HTML, HTA (HTML Applications) почти идеально подходят для создания форм ввода пользовательских данных.. Предлагаемый ниже сценарий HTA демонстрирует интересный пример практического использования HTA. Форма управления пользовательскими квотами User Quota Utility позволяет устанавливать и показывать квоты диска на локальном или удаленном компьютере, управляемом Windows Server 2003 или Windows XP. Даже если вы не пользуетесь квотами, эта форма позволяет продемонстрировать методы, используемые при создании административных утилит с помощью HTA и VBScript. Если вы используете Windows 2003 или XP, но не включили использование квот, то это можно сделать с помощью диалогового окна Properties (Свойства) на локальном компьютере, хотя бы чтобы опробовать предлагаемый сценарий HTA. Обратите внимание - не включайте флажок

Deny disk space to users exceeding quota limit (не давать места на диске пользователям, превысившим предел по квотам), поскольку при этом пользователи не смогут записывать информацию на диск в случае превышения установленной квоты. Подробнее об использовании квот см. в статье Microsoft "Managing Disk Quotas in Windows Server 2003 and Windows XP" - управление квотами на диске в Windows Server 2003 и Windows XP - на сайте Microsoft http://www.microsoft.com/technet/scriptcenter/topics/win2003/quotas.mspx.

Структура HTA

Рисунок 2 показывает утилиту по квотам пользователя, User Quota Utility: Экран для ввода информации состоит из четырех полей для ввода информации, одного раскрывающегося списка, двух кнопок и двух текстовых полей. Рассмотрим эти компоненты и работу самой утилиты.

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

В четвертом поле для ввода информации пользователи вводят размер квоты в байтах. Как видно по Рисунку 1, я ввел по умолчанию размер 5368709120, т.е. 5 Гбайт, но вы можете установить размер, который считаете нужным. Если вы предпочитаете вводить размер квоты в байтах, мегабайтах или гигабайтах, то можно воспользоваться вторым HTA (UserQuotaUtility2.hta), в котором реализованы эти три возможности, как показано на Рисунке 3.

Раскрывающийся список (drop-down box).

Раскрывающийся список находится прямо после второго текстового поля. Он позволяет пользователю выбрать букву накопителя для компьютера, на котором действуют квоты. Ниспадающее окно в этом примере HTA имеет довольно внушительный список букв накопителей. Значение по умолчанию в приведенном сценарии HTA - дисковод C:.

Кнопки. Когда пользователь щелкнет по первой кнопке Run Modify User Quotas (активизировать изменение квот пользователя), то утилита User Quota Utility попытается установить указанную квоту на выбранные системы. Это действие связано с подпрограммой RunMod в разделе VBScript в этом HTA, что показывает Листинг 2.

Вторая кнопка, Run Quota Query - активизировать запрос квоты, дает список квот для указанного сервера или накопителя. Это действие связано с подпрограммой RunQuery в разделе VBScript в этом HTA. Это приложение не фильтрует идентификаторы пользователей при запуске этой подпрограммы, оно перечисляет все настройки по квотам пользователей для указанного компьютера или накопителя. Даже если пользователь перечислил идентификаторы пользователей в первом поле для ввода информации, активизация кнопки Run Quota Query приведет к тому, что будет получена информация обо всех учетных записях на указанной системе, а не только о записях, перечисленных в списке.

Текстовые поля. Первое текстовое поле, Status Box - поле состояния, показывает статус (successful или unsuccessful) для самого последнего действия. Второе текстовое поле, Application Information - информация о приложении, представляет собой краткое изложение этого приложения, включая инструкцию. Эти два поля представляют собой одинаковые типы текстовых полей, которые утилита использует для ввода, они декларируются как ReadOnly (только чтение), что не позволяет пользователям вводить текст. Вы можете изменить программно содержание этих текстовых областей, устанавливая различное значение в коде fieldnames.value в сценарии HTA.

Анализ HTA

HTA начинается с основных настроек приложения HTA. Весь сценарий HTA увидтеь в Листинге 3. Для просмотра сценария откройте файл HTA в блокноте Notepad.

После настроек приложения, HTA включает раздел VBScript, см. Листинг 2. Этот раздел содержит три подпрограммы: Window_Onload, RunMod и RunQuery.

Подпрограмма Window_Onload. Подпрограмма Window_Onload выполняется автоматически при активизации этого приложения. Сначала подпрограмма использует self.Focus() для запуска окна приложения впереди всех других открытых окон. Затем подпрограмма настраивает размеры окна приложения и устанавливает размер квоты по умолчанию (qlimit.value).

Подпрограмма RunMod. Подпрограмма RunMod, которая ассоциирована с кнопкой Run Modify User Quotas, содержит код для изменения квот пользователя. Помимо очистки значения поля Status (с помощью оператора statval.value = "") этот код проверяет наличие символов «возврат каретки» или «перевод строки» в конце поля для ввода идентификатора пользователя, User ID. Символ «возврат каретки» или «перевод строки» нужен для получения окончания идентификатора, поэтому если его нет, то код его добавляет. Подпрограмма RunMod использует функцию Split с разделителем vbcrlf для построения массива идентификаторов пользователей, который позже использует HTA для установления этих квот.

Этот сценарий приписывает значения из формы для ввода информации HTA переменным, которые используются в сценарии. Этот сценарий использует GetObject для поиска экземпляра класса. Он использует классWin32_DiskQuota как для подпрограммы RunMod, так и для RunQuery, и использует класс Win32_ComputerSystem для поиска имени локального компьютера, когда пользователь оставляет поле ввода домена пустым.

Вся подпрограмма RunMod дана во фрагменте A кода в Листинге 2. Здесь подпрограмма обрабатывает в цикле идентификаторы пользователей, ID. Для каждого ID подпрограмма находит специальную квоту пользователя, устанавливает и фиксирует предельное значение по методу objQuota.Put_.

Подпрограмма RunQuery. Подпрограмма RunQuery, которая ассоциирована с кнопкой Run Query Quota button, начинает с установки параметров для ввода значений. Затем RunQuery устанавливает константы wbemFlagForwardOnly и wbemFlagReturnImmediately. Константа wbemFlagForwardOnly вызывает сценарий для получения однонаправленного счетчика, такие счетчики обычно работают намного быстрее и используют меньше памяти, чем в случае обычных счетчиков. Константа wbemFlagReturnImmediately делает вызов для непосредственного возврата.

Затем подпрограмма RunQuery подключается через Windows Management Instrumentation (WMI) к серверу или компьютеру, который указал пользователь, если это поле осталось пустым, то сценарий подключает к локальному компьютеру. Затем подпрограмма использует запрос на языке WQL (WMI Query Language) для получения имеющейся информации о квоте, как показывает код фрагмента B. В этом запросе сценарий определяет константы wbemFlagForwardOnly и wbemFlagReturnImmediately. Если вы хотите уменьшить число строк в коде, то можно совместить значения этих констант и задать их десятичное значение равным 48 - пример этой более короткой версии во фрагменте A кода.

В запросе WQL параметр WQL необязательный. Фрагмент B кода использует этот параметр, но если вы его не включаете, надо поставить две запятые, между которыми ничего нет, как показывает оператор Set colItems фрагмента A. Лучше все же указывать WQL, потому что его наличие вносит ясность, что это - оператор Select для использования WMI.

После того, как RunQuery получает данные о существующих квотах, RunQuery показывает все полученные данные в крупноформатной таблице Microsoft Excel. Заметьте, что поскольку для класса Win32_DiskQuota нет свойства типа счетчик, подпрограмма помещает инициализацию Excel в цикл For Next и устанавливает на метку do_once. Если бы свойство счетчика было бы доступно, подпрограмма могла бы просто выполнять проверку по условию «значение больше нуля», тогда не надо было бы инициализировать Excel и цикл For Next, если бы не было результатов возврата по запросу.

Завершение кода. Раздел на языке VBScript в HTA также содержит функцию ConvStatus, как показано во фрагменте C. Эта функция преобразует статус квоты из численного представления 0, 1 или 2 в значения OK, Warning или Exceeded, соответственно. Обратите внимание, что код проверяет ошибки в ключевых блоках программы VBScript. Этот код использует err.description для обнаружения генерированных системой ошибок и затем показывает их в поле Status Box для HTA. После раздела на языке VBScript файл HTA включает код для окна ввода.

Пишите свои сценарии HTA.

Вы можете просмотреть и отредактировать файл HTA — например, чтобы изменить предельные значения квот — с помощью редактора Notepad. Если вы хотите создать свои интерфейсы HTA и вы не против написания HTML, которые вы устанавливаете, то можете создать собственные экранные формы для ввода информации в редакторе Notepad и после переименовать файл с расширением .hta. Однако если вы не знаете HTML, я предлагаю использовать приложение для разработки веб-узлов, например, Microsoft Office FrontPage 2003. Такие приложения намного облегчают изучение HTML, и вы сможете создать работающее приложение и сберечь свое время и усилия, которые надо было бы на это потратить.


Листинг 1. Код для примера HTA на Рисунке 1
Simple HTA Sample

Text box Use a text box for most any type of input

Password box This provides Masked input


Листинг 2. Фрагмент утилиты User Quota Utility

Листинг 3. htaexample.hta


User Quota Utility

Modify or Query User Quotas on Server 2003 & XP

Modify Quotas for

these User Accounts On Computer  Drive C:D:E:F:G:H:I:J:K:L:M:N:O:P:Q:R:S:T:U:V:W:X:Y:Z:

If accounts are from a Domain or another Computer ... enter Computer or Domain name

Set to this Limit (bytes)

To acquire a Quota listing, enter Computer & Drive info only.

Status Box

Application Information:
Allows modification of User Quotas and lists Quota information on Server 2003 & XP only.
You can set Multiple User quotas at the same time by keying in UserIDs (one per line). Be aware that all users will be set to the limit you provide. The Quota Query lists all User quotas on the Computer & Drive indicated. It does not filter on User Accounts listed in the User Accounts box. If the Computer or Domain input boxes are left Blank the local computer is used.
System Requirements: IE 5 or greater. Excel (for Query Report).
The Box above is a status box. It lists errors, if any and a status when the process is complete.



Листинг 4. htaexample2.hta


User Quota Utility

Modify or Query User Quotas on Server 2003 & XP

Modify Quotas for

these User Accounts On Computer  Drive C:D:E:F:G:H:I:J:K:L:M:N:O:P:Q:R:S:T:U:V:W:X:Y:Z:

If accounts are from a Domain or another Computer ... enter Computer or Domain name

Set to this Limit (bytes)     Mb    Gb

To acquire a Quota listing, enter Computer & Drive info only.

Status Box

Application Information:
Allows modification of User Quotas and lists Quota information on Server 2003 & XP only.
You can set Multiple User quotas at the same time by keying in UserIDs (one per line). Be aware that all users will be set to the limit you provide. The Quota Query lists all User quotas on the Computer & Drive indicated. It does not filter on User Accounts listed in the User Accounts box. If the Computer or Domain input boxes are left Blank the local computer is used.
System Requirements: IE 5 or greater. Excel (for Query Report).
The Box above is a status box. It lists errors, if any and a status when the process is complete.



Таблица 1: Доступные Атрибуты приложения HTA: APPLICATION Attributes
Атрибут ОписаниеВозможные значения (если применимы)Имя приложения APPLICATIONNAMEУстанавливает или находит имя HTA
Граница BORDERУстанавливает или находит тип границы окна Dialog
thick
thin
none
Стиль границы BORDERSTYLE Устанавливает или находит набор стилей для границы контента в окне HTA обычная (по умолчанию): обычная граница
выпуклая: выпуклая 3-D граница
утопленная : утопленная 3-D граница
сложная: выпуклая и утопленная граница
static: 3-D граница обычно используется для окон, которые не принимают ввод пользователя
Заголовок CAPTIONУстанавливает или находит логическое значение, которое указывает, будет ли окно содержать строку заголовка или заголовок да (по умолчанию): строка заголовка отображается
нет: строка заголовка не отображается
Контекстное меню CONTEXTMENUУстанавливает или находит логическое значение, которое указывает, будет ли размещаться контекстное меню при нажатии правой кнопки мыши да (по умолчанию): контекстные меню отображаются
нет: контекстные меню не отображаются
Иконка ICONУстанавливает или находит имя и местонахождение иконки, указанной в HTA  
Внутренняя граница INNERBORDERУстанавливает или находит логическое значение, которое указывает, будет ли показываться внутренняя 3D-граница да (по умолчанию): внутренняя 3D-граница отображается
нет: внутренняя 3D-граница не отображается
Кнопка MAXIMIZE MAXIMIZEBUTTONУстанавливает или находит логическое значение, которое указывает, будет ли в строке заголовка отображаться кнопка Maximize да (по умолчанию): кнопка Maximize отображается
нет: кнопка Maximize не отображается
Кнопка MINIMIZE MINIMIZEBUTTONУстанавливает или находит логическое значение, которое указывает, будет ли в строке заголовка отображаться кнопка Minimize да (по умолчанию): кнопка Minimize отображается
нет: кнопка Minimize не отображается
NAVIGABLEУстанавливает или находит логическое значение, которое указывает, будут ли загружаться прилинкованные документы в главном окне HTA или будет загружаться новое окно браузера да: ссылки в главном окне HTA будут загружаться
нет (по умолчанию): ссылки в главном окне HTA будут загружаться в новое окно браузера
Прокрутка SCROLLУстанавливает или находит, будут ли отображаться полосы прокрутки да (по умолчанию): полосы прокрутки отображаются
нет: полосы прокрутки не отображаются
auto: полосы прокрутки отображаются только, когда контент больше, чем место, отведенное пользователю
SCROLLFLATУстанавливает или находит логическое значение, которое указывает, будет ли полоса прокрутки трехмерной или плоской да: полосы прокрутки плоские
нет (по умолчанию): полосы прокрутки трехмерные
Выбор SELECTIONУстанавливает или находит, как можно выбирать контент - с помощью мыши или клавиатуры да (по умолчанию): контент может выделяться с помощью мыши или клавиатуры
нет: контент не может выделяться с помощью мыши или клавиатуры
Показывать внутреннюю панель задач SHOWINTASKBARУстанавливает или находит логическое значение, которое указывает, будет ли HTA отображаться на панели задач Windows да (по умолчанию): HTA размещается в панели задач Windows
нет: HTA не размещается в панели задач Windows
Один пример SINGLEINSTANCEУстанавливает или находит логическое значение, которое указывает, будет ли запускаться только один пример указанного HTA одновременно да: только один экземпляр указанного HTA может выполняться одновременно
нет (по умолчанию): одновременно могут выполняться несколько экземпляров указанного HTA
SYSMENUУстанавливает или находит логическое значение, которое указывает, будет ли отображаться системное меню да (по умолчанию): системное меню отображается
нет: системное меню не отображается
Состояние окна WINDOWSTATEУстанавливает или находит начальный размер окна HTA minimize - минимизировать: окно не отображается при запуске; зато появляется заголовок минимизированного приложения в панели задач
maximize - сделать максимальным: окно заполняет весь экран

Поделитесь материалом с коллегами и друзьями

Пишем программы на HTML!: teafi — LiveJournal

Что-то нравится мне, ребята, программировать HTA. HTA - это HTML Application - HTML-страничка в качестве интерфейса + код на скрипте, выполняется вне браузера, в своём окне, как любое приложение, умеет работать с файловой системой - открывать/сохранять/копировать файлы, запускать другие программы (на любом языке) и т.д, и всё прочее. Причём, устанавливать дополнительно ничего не надо - исполнение HTA встроено в ОС (ещё со времён Win98, оказывается)! (Кст., как и исполнение просто скриптов .js/.vbs, без HTML-GUI.)

Создаём программы прямо в Блокноте, без каких-либо дополнительных средств! 🙂 А представляете, какой интерфейс можно сделать, используя CSS!

Например, следующая программа менее 2Кб размером (1771 байт 🙂 ) - это маленький, но вполне рабочий текстовый редактор - можно открывать файлы, редактировать и сохранять:

<html>
<head><title>HTA Текстовый Редактор</title>
<hta:application ApplicationName="hted"
    scroll="no">
<script language="VBScript">
sub fread
    on error resume next
    if strFileName.value = "" then
        MsgBox "Укажите имя файла."
        exit sub
    end if
    set fso = CreateObject("Scripting.FileSystemObject")
    set txtFile = fso.OpenTextFile(strFileName.value, 1, False, 0) 
    if err.number <> 0 then
        MsgBox "Не могу открыть файл " + strFileName.value
        err.clear
        exit sub
    end if
    txt.value = txtFile.ReadAll
    txtFile.Close
end sub

sub fsave
    on error resume next
    if strFileName.value = "" then
        MsgBox "Укажите имя файла."
        exit sub
    end if
    set fso = CreateObject("Scripting.FileSystemObject")
    set txtFile = fso.OpenTextFile(strFileName.value, 2, True, 0) 
    if err.number <> 0 then
        MsgBox "Не могу открыть файл " + strFileName.value
        err.clear
        exit sub
    end if
    if txt.value <> "" then
        txtFile.write(txt.value)
    end if
    txtFile.Close
end sub
</script>
</head>
<body><basefont face="Arial">

<table align="center" border=0>
<tr><td colspan=3>Имя файла:
<tr>
<td><input type="file" size=48 name="strFileName" width=100%> 
<td align="right" colspan=2><input type="button" value="Открыть">

<tr><td colspan=3><textarea name="txt" cols=64 rows=24></textarea>

<tr>
<td align="center" colspan=2>Поиск в тексте: Ctrl+F
<td align="right"><input type="button" value="Сохранить">
</table>

<script language="VBScript">
self.resizeTo htedtable.offsetWidth + 50, htedtable.offsetHeight + 50
</script>

</body>
</html>

Нюансы интерфейса, я не пытался подражать Блокноту или др. редакторам, всё сделано по-простому:
1. Кнопка "Обзор" вставляет имя файла в строку "Имя файла", и всё. Можно редактировать эту строку как угодно, можно вообще вводить туда путь к файлу руками.
2. Кнопка "Открыть" загружает текст из файла, имя которого в данный момент в строке "Имя файла".
3. Кнопка "Сохранить" сохраняет текст в файл, имя которого в данный момент в строке "Имя файла". Это не обязательно должно быть то же имя, которое было, когда вы нажимали "Открыть", какое впишите - туда и сохранит 🙂 Если такой файл существует - запишет в него текст (не переспрашивая), если такого файла нет, будет создан новый.

Введение в HTML Application: http://www.sysengineering.ru/Administration/HyperTextApplications.aspx

Удачного и интересного программирования! 🙂

HTML-приложения - HTML Application - qwe.wiki

В данной статье относится к собственной реализации ОМТ Microsoft. Для получения информации относительно HTML5 кэша манифеста, также упоминается как в автономном режиме HTML приложений, пожалуйста , см манифеста кэша в HTML5 .

HTML Application ( HTA ) является Microsoft Windows программа, исходный код состоит из HTML , Dynamic HTML , и один или несколько языков сценариев поддерживается Internet Explorer , таких как VBScript или JScript . HTML используется для создания пользовательского интерфейса, а также язык сценариев используется для программной логики. HTA выполняется без ограничений модели интернет - безопасности браузера; на самом деле, он выполняет как «полностью доверенный» приложения.

Обычное расширение файла из ОМТ является .hta.

Возможность выполнения ОТЗА была введена в Microsoft Windows в 1999 году, наряду с выпуском Microsoft Internet Explorer 5 . 9 декабря 2003 эта технология была запатентована .

Пользы

ОТЗ дает разработчику особенность HTML вместе с преимуществами языков сценариев. Они пользуются популярностью у администраторов системы Microsoft, которые используют их для администрирования системы из прототипов «полномасштабных» приложения, особенно там, где гибкость и скорость развития имеет решающие значение.

Среда

выполнение

Снимок экрана примера окна создаваемого mshta.exe

HTA выполняется с помощью программы mshta.exe, или, в качестве альтернативы, дважды щелкнув на файле. Эта программа , как правило , устанавливается вместе с Internet Explorer. mshta.exeвыполняет HTA путем инстанцирования рендеринга Internet Explorer (Mshtml), а также любые необходимые языковые двигатели (например, vbscript.dll).

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

По умолчанию, ОТЗ предоставляются в соответствии с «содержанием стандартов режима в режим и обратной совместимости IE7 Standards режим содержания в режиме IE5 (Причуды)», но это может быть изменено с помощью X-UA-Compatibleзаголовков.

HTA двигатель (mshta.exe) зависит от Internet Explorer . Начиная с Windows Vista , пользователь может удалить Internet Explorer из Windows, что приведет к HTA двигатель перестанет работать.

ОТЗ полностью поддерживается в Internet Explorer от версии 5 до 9. Дополнительных вариантов, таких как 10 и 11, по-прежнему поддерживают ОТЗ, хотя с некоторыми незначительными особенности выключены.

соображения безопасности

Когда обычный HTML - файл выполняется, выполнение сводится к модели безопасности веб - браузера , то есть, он ограничивается связь с сервером, манипулируя страницы объектной модели ( как правило , для проверки форм и / или создавать интересные визуальные эффекты ) и чтение или запись куки .

С другой стороны, HTA работает как полностью доверенные приложения и , следовательно , имеет больше привилегий , чем обычный HTML файл; например, ОМТ может создавать, редактировать и удалять файлы и реестр записи. Хотя ОТЗ работать в этом «доверенный» среде, запрашивая Active Directory может быть предметом логики Internet Explorer зоны и связанные с ними сообщения об ошибках.

развитие

Для того, чтобы настроить внешний вид ОМТ, необязательный тег hta:applicationбыл введен в HEADразделе. Этот тег предоставляет набор атрибутов , которые позволяют контролировать стиль границы, значок программы и т.д., и предоставлять такую информацию, как аргумент командной строки () используется для запуска HTA. В противном случае, HTA имеет тот же формат , как HTML - страница.

Любой текстовый редактор может быть использован для создания HTA. Редакторы со специальными функциями для разработки HTML-приложений, могут быть получены от корпорации Майкрософт или сторонних источников.

Существующий HTML - файл (с расширением файла .htmили .html, например) может быть изменен на HTA, просто изменив расширение .hta.

Уязвимости

HTA были использованы для доставки вредоносных программ.

пример

Это пример Hello World как HTML Application.

<HTML>
<HEAD>
<HTA:APPLICATION 
   BORDER="thick" 
   BORDERSTYLE="complex"/>
<TITLE>HTA - Hello World</TITLE>
</HEAD>
<BODY>
<h3>HTA - Hello World</h3>
</BODY>
</HTML>

Смотрите также

Рекомендации

внешняя ссылка

Winres.exe (редактор для локализации ресурсов Windows)

  • Время чтения: 6 мин

В этой статье

Редактор для локализации ресурсов Windows (Winres.exe) — это программа визуальной разметки, используемая при локализации ресурсов пользовательского интерфейса Windows Forms.The Windows Resource Localization Editor, Winres.exe, is a visual layout tool that helps localization experts localize Windows Forms user interface (UI) resources used by forms. Файлы RESX и RESOURCES, используемые как входные для программы Winres.exe, могут быть созданы с использованием среды визуального проектирования, такой как Microsoft Visual Studio.The .resx or .resources files that are used as input to Winres.exe can be created using a visual design environment such as Microsoft Visual Studio. Информацию о развертывании ресурсов в приложениях .NET Framework см. в разделе Ресурсы в приложениях для настольных систем.For information on deploying resources in .NET Framework applications, see Resources in Desktop Apps.

Приложение Winres.exe устанавливается вместе с Visual Studio.Winres.exe is installed with Visual Studio. Для запуска средства используйте командную строку разработчика Visual Studio.To run the tool, use the Developer Command Prompt for Visual Studio. Дополнительные сведения см. в разделе Командные строки.For more information, see Command Prompts.

СинтаксисSyntax

winres resourceFile
winres /?

АргументыArguments

АргументArgument Описание:Description
resourceFile Файл ресурсов, который требуется локализовать.The resource file to localize. Это должен быть файл ресурсов Windows Forms с расширением RESX или RESOURCES, созданный с помощью конструктора Visual Studio.This file must be a Windows Forms form .resx or .resources file generated by the Visual Studio designer. Программа Winres.exe не может открывать универсальные RESX-файлы и RESOURCES-файлы.Winres.exe cannot open generic .resx or .resources files.
ПараметрOption Описание:Description
/?/? Отображает синтаксис команд и параметров программы.Displays command syntax and options for the tool.

RemarksRemarks

Состояние элементов пользовательского интерфейса формы в проекте Windows Forms обычно хранится в файлах ресурсов — файлах на основе XML с расширением RESX или соответствующих им скомпилированных двоичных версиях с расширением RESOURCES.The state of UI elements from a form in a Windows Forms project are typically stored in resource files, which are either XML-based files with the extension .resx or the corresponding compiled, binary versions with the extension .resources. Программа Winres.exe предоставляет ограниченные возможности редактирования файлов обоих типов вне среды разработки Visual Studio.Winres.exe is a tool that enables limited editing of either type of file outside of the Visual Studio design environment. В частности, она поддерживает следующие виды операций редактирования.Specifically, it allows the following types of editing operations:

  • Предусмотрено редактирование файла ресурсов, зависящего или не зависящего от языка и региональных параметров, для изменения свойств пользовательского интерфейса формы или ее элементов управления, например текста, размера или положения.A neutral or specific culture resource file can be edited to change the UI properties of the form or its controls, such as their text, size, or position.

  • Можно создавать файлы ресурсов, зависящие или не зависящие от языка и региональных параметров, из файла ресурсов по умолчанию.Neutral or specific culture resource files can be generated from the default resource file.

  • Файл ресурсов определенного языка и региональных параметров можно сохранить в виде файла ресурсов другого языка региональных параметров.A culture resource file can be saved as another culture resource file. Например, файл ресурсов английского языка (США) можно сохранить как файл ресурсов польского языка.For example, an English (U.S.) resource file could be saved as a Polish resource file. Обычно новый файл требует дополнительного редактирования для приведения в соответствие новому языку и региональным параметрам.Typically the new file would subsequently be edited to be compatible with the new culture.

Также см. раздел Иерархическая организация ресурсов для локализации или Иерархическая организация ресурсов для локализации.Also see Hierarchical Organization of Resources for Localization or Hierarchical Organization of Resources for Localization.

Программа Winres.exe не может преобразовать RESX-файл в соответствующий ему RESOURCES-файл, для этого используется программа Resgen.exe.Winres.exe cannot convert a .resx file into its corresponding .resources file; use the Resgen.exe tool instead. Дополнительные сведения о программе Resgen.exe см. в разделе Resgen.exe (генератор файлов ресурсов).For more information about Resgen.exe, see Resgen.exe (Resource File Generator).

Программа Winres.exe представляет собой графическое приложение, которое воссоздает форму Windows Forms в виде версии этапа разработки, используя лишь файл ресурсов, без доступа к исходному коду.Winres.exe is a graphical application that recreates a design-time version of a Windows Forms form from just the resource file, without having access to the source code. Интерфейс программы Winres.exe включает конструктор форм Windows Forms из Visual Studio и окно свойств.Winres.exe hosts Visual Studio's Windows Forms Form Designer and Properties window. Такой подход позволяет визуально редактировать RESOURCES-файл или RESX-файл, содержащий форму Windows Forms.These features enable visual editing of a .resources or .resx file containing a Windows Forms form. Обычно программа Winres.exe используется для изменения подписей элементов управления и настройки их расположения и размера, чтобы подписи могли вместить текст на требуемом языке.Typically, localizers use Winres.exe to edit control labels and adjust the location and size of controls to accommodate the labels for the target culture.

Если программа Winres.exe не может разрешить какой-либо тип элемента управления, она создает его прототип в локализованном файле RESX или RESOURCES.If Winres.exe cannot resolve the type of a control, it creates a placeholder control in the localized .resx or .resources file. Прототип элемента управления отображается в форме Windows Forms в виде заштрихованного окна.The placeholder control appears on the Windows Forms form as a hatched window. Размер и расположение заштрихованного окна совпадают с размером и расположением самого элемента управления.The size and position of the hatched window matches that of the actual control. Все доступные для локализации свойства прототипа элемента управления показаны в окне Свойства.All the available localizable properties for the placeholder control appear in the Properties window. Все изменения, внесенные в прототип, сохраняются в самом элементе управления.Any changes that you make to the placeholder control are saved for the actual control.

Сравнение программы Winres.exe со средой Visual StudioWinres.exe versus Visual Studio

Обычно, прежде чем приступать к локализации форм Windows Forms для приложения, необходимо выбрать инструмент локализации: Visual Studio или программа Winres.exe.In general, before you begin to localize an application's Windows Forms forms, you should decide whether you want to use Visual Studio or Winres.exe as the localization tool. Свободное переключение между этими двумя инструментами для локализации может быть невозможно из-за проблем совместимости версий, описанных ниже.Version compatibility, as described later, may prevent you from switching from one tool to the other.

Преимущество среды Visual Studio заключается в том, что ее можно использовать как для разработки приложения, так и для его локализации.The advantage of Visual Studio is that you can use it to both develop and localize an application. Чтобы локализовать форму после ее разработки, задайте значение LocalizableAttribute для свойства (свойствоLocalizableвредакторе свойствtrue) и значение, соответствующее требуемому языку локализации, для свойства Language.To localize a form, after development is complete, set the form's LocalizableAttribute (the Localizable property in the Properties editor) to true and change its Language property to the desired target culture. Затем необходимо отредактировать строки и настроить расположение и размер элементов управления таким образом, чтобы они смогли вместить строки на языке локализации.Then, edit strings and adjust the location and size of controls to accommodate the strings for the target culture. Среда Visual Studio при сохранении локализованного RESX-файла записывает в него только локализуемые свойства (изменяющиеся на языке локализации).When you save the localized .resx file, Visual Studio writes only the localizable properties (properties that changed in the target culture) to the file. Среда Visual Studio автоматически создает в нужном каталоге вспомогательную сборку для локализованного RESX-файла.Visual Studio automatically creates a satellite assembly for the localized .resx file in the correct directory location.

Хотя Visual Studio обеспечивает интегрированную среду разработки и локализации, сторонним локализаторам рекомендуется использовать программу Winres.exe.Although Visual Studio provides an integrated development and localization environment, Winres.exe is the recommended tool to use if localization is done by third-party localizers. Так как программа Winres.exe предназначена только для локализации, она позволяет более четко отделить код приложения от локализуемых форм, что лучше подходит для управления большими проектами.Because Winres.exe is a localization tool only, it allows for a cleaner separation of an application's code from the forms to be localized, which is more practical for managing large projects.

Использование программы Winres.exeUsing Winres.exe

Чтобы выполнить локализацию с помощью программы Winres.exe, необходимо сначала разработать приложение с помощью визуального конструктора, такого как конструктор Windows Forms в Visual Studio.To localize using Winres.exe, you must first develop an application using a visual designer like the Windows Forms Designer in Visual Studio. После завершения разработки присвойте свойству LocalizableAttribute данной формы (свойство Localizable в редакторе свойств) значение true и передайте стороннему локализатору RESX-файл с языком и региональными параметрами по умолчанию.When development is complete, set the form's LocalizableAttribute (the Localizable property in the Properties editor) to true, and then hand off the .resx file for the default culture to a third-party localizer. Такой RESX-файл содержит дополнительные сведения, которые программа Winres.exe использует для воссоздания версии исходной формы, соответствующей времени разработки.This .resx file contains extra information that Winres.exe uses to recreate a design-time version of the original form.

Примечание

Программу Winres.exe нельзя использовать для редактирования файла ресурсов по умолчанию.Winres.exe cannot be used to edit the default resource file. Программа Winres.exe интерпретирует все измененные свойства как локализованные и сохраняет их в файле ресурсов на языке локализации.Winres.exe interprets all changed properties as localized properties and saves them to the target culture resource file.

Окончательные версии файлов ресурсов на языке локализации могут в итоге быть использованы для создания локализованных версий приложения.The final versions of the culture resource files can finally be used to create localized versions of the application. Дополнительные сведения см. в разделе Ресурсы в приложениях для настольных систем.For more information, see Resources in Desktop Apps.

Программа Winres.exe поддерживает следующие возможности:Winres.exe has the following features and capabilities:

  • Программа Winres может работать в режиме одного файла (SFM) или в режиме файлов Visual Studio (VSFM).Winres can operate in Single File Mode (SFM) or Visual Studio File Mode (VSFM). SFM — это устаревший режим, предусматривающий хранение всей информации о форме и ее содержимом в файле ресурсов.SFM is the legacy mode where complete information about the form and its contents is stored to the resource file. В режиме VSFM в файле ресурсов хранятся только изменения, связанные с языком и региональными параметрами.VSFM only stores only the cultural changes in the resource file.

  • Окно сообщений об ошибках находится в левом нижнем углу основного окна.An error-reporting window, docked to the bottom-left of the main window.

  • С помощью команды Проверить сочетания клавиш в меню Формат можно проверить наличие дублирующихся сочетаний клавиш.Hotkeys can be checked for duplicates: from the Format menu, click the Check HotKeys command.

Совместимость версийVersion Compatibility

Рекомендуется использовать версию Winres.exe, выпущенную вместе с платформой .NET Framework.You should use the version of Winres.exe that was released with the .NET Framework you are using. В таблице ниже представлен список совместимых версий:The following table lists the compatible versions:

Visual StudioVisual Studio .NET Framework.NET Framework Winres.exeWinres.exe
Visual Studio .NET 2002Visual Studio .NET 2002 1,01.0 1,01.0
Visual Studio .NET 2003Visual Studio .NET 2003 1,11.1 1,11.1
Visual Studio 2005Visual Studio 2005 2.02.0 2.02.0
Visual Studio 2008Visual Studio 2008 3.0 и 3.53.0 and 3.5 3.0 и 3.53.0 and 3.5
Visual Studio 2010Visual Studio 2010 4.04.0 4.04.0
Visual Studio 2017Visual Studio 2017 4.64.6 4.64.6

Примечание

Режим VSFM обладает преимуществом в плане совместимости с Visual Studio, но поскольку в этом режиме в файле ресурсов хранятся только измененные значения, для программы Winres.exe требуется, чтобы в каталоге текущего файла ресурсов располагались и его родительские файлы.Although VSFM has the advantage of being compatible with Visual Studio, since it stores only changed values in the resource file, Winres.exe requires that the parents of the current resource file be located in the same directory. Например, при редактировании немецкоязычного файла ресурсов TestApp.de-DE.resources необходимо наличие файла ресурсов по умолчанию TestApp.resx, а также, возможно, не зависящего от языка файла ресурсов TestApp.de.resources.For example, editing TestApp.de-DE.resources, a German in Germany resource file, requires the presence of the default resource file, TestApp.resx, and possibly the culture-neutral resource file, TestApp.de.resources.

ПримерыExamples

Локализация файла RESX или RESOURCES, связанного с формойTo localize a .resx or .resources file associated with a form

  1. Чтобы запустить программу Winres.exe, введите в командной строке разработчика winres.Type winres in the developer command prompt to run Winres.exe.

  2. Чтобы открыть ресурсы по умолчанию для локализуемой формы, выберите команду Открыть в меню Файл и найдите нужный файл.To open the default resources for a form to localize, click the Open command on the File menu and navigate to the file to open it.

    -или--or-

    При запуске программы Winres.exe в командной строке укажите файл, который требуется открыть.Specify the file to open at the command line when you start Winres.exe.

    Следующая команда запускает программу Winres.exe и загружает форму, связанную с файлом TestApp.resx, в конструктор форм.The following command starts Winres.exe and loads the form associated with TestApp.resx in the Form Designer.

    winres TestApp.resx
    

    Следующая команда запускает программу Winres.exe и загружает форму, связанную с файлом TestApp.resources, в конструктор форм.The following command starts Winres.exe and loads the form associated with TestApp.resources in the Form Designer.

    winres TestApp.resources
    

    Примечание

    Если форма, ресурсы которой редактируются, является унаследованной, необходимо, чтобы и сборка, содержавшая исходную форму, и сборка, содержащая наследующую (производную) форму, были зарегистрированы в глобальном кэше сборок или располагались в том же каталоге, что и программа WinRes.exe.If the form whose resources you are editing is an inherited form, both the assembly contained the inherited form and the assembly containing the inheriting (derived) form must either be registered in the Global Assembly Cache (GAC), or must reside in the same directory as WinRes.exe. Дополнительные сведения об установке компонентов .NET Framework в глобальный кэш сборок см. в разделе Глобальный кэш сборок.For more information about installing .NET Framework components into the GAC, see Global Assembly Cache.

  3. Выберите элементы управления в форме и измените значения их свойства Text и других свойств в соответствии с языком локализации и региональными параметрами.Select controls on the form and change their Text and other properties to reflect the localized culture and its language. Переместите элементы управления или измените их размер, чтобы вместить локализованный текст.Move or resize controls as necessary to accommodate the localized text.

  4. Чтобы сохранить локализованную версию файла RESX или RESOURCES, щелкните значок Сохранить или выберите команду с тем же именем в меню Файл.To save the localized version of the .resx or .resources file, click the Save icon or the same command on the File menu. Откроется окно Выбор языка и региональных параметров.The tool displays the Select Culture window.

  5. Выберите нужный язык и файловый режим и нажмите кнопку ОК.Select the appropriate culture and file mode then click OK.

    Программа сохранит файл, используя правила присвоения имен, которые среда выполнения требует применять к локализованным файлам ресурсов.The tool saves the file using the naming convention that the run time expects for localized resource files. Например, при локализации файла TestApp.resources на немецкий язык (Германия) этот файл будет сохранен как TestApp.de-DE.resources.For example, if you localize TestApp.resources for German in Germany, the tool saves the file as TestApp.de-DE.resources. При локализации файла TestApp.resx на немецкий язык (Германия) файл сохраняется как TestApp.de-DE.resx.If you localize TestApp.resx for German in Germany, the tool saves the file as TestApp.de-DE.resx. Подробнее о соглашениях об именовании ресурсов см. в разделе Упаковка и развертывание ресурсов.For more information about resource naming conventions, see Packaging and Deploying Resources. Список предварительно определенных названий языков, используемых средой выполнения, см. в разделе о классе CultureInfo.For a list of the predefined culture names used by the run time, see the CultureInfo class.

См. также разделSee also

Добавить комментарий

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