XnView - довольно мощная программа, сочетающая в себе множество функций по работе с изображениями. Это может быть и простой просмотр файлов, и их конвертирование, и незначительная обработка. Является кроссплатформенной, что позволяет использовать её практически в любой системе. Программа уникальна ещё и тем, что поддерживает около 400 различных форматов изображений, среди которых встречаются как самые используемые и популярные, так и нестандартные форматы. XnView может производить пакетную конвертацию изображений. Правда, сконвертировать их можно только в 50 форматов, но среди этих 50 форматов присутствуют все популярные расшир...
Многие пользователи MS Windows давно успели заметить, что стандартный блокнот - это довольно неудобная в своем использовании программа. Заменой ей может стать данный бесплатный редактор текстовых файлов, обеспечивающий поддержку синтаксиса большого количества языков программирования. Программа содержит в себе довольно широкий набор опций и отличается минимальным потреблением ресурсов процессора. Программа делает возможным одновременный просмотр нескольких документов сразу и редактирование их, без закрытия лишних окон. Доступной стала и такая опция, как редактирование одного и того же документа в разных местах, что очень удобно...
Notepad2 – простое приложение, позволяющее печатать и редактировать текст. Она поможет в создании HTML-страниц, программировании на различных языках (CSS, Java, JavaScript, Python, SQL, Perl, PHP) так как способна подсвечивать код. Программа построена по принципу простого блокнота, она маловесна и компактна. Этот текстовый редактор проверяет все скобки на наличие пары, поддерживает авто отступы. Программа Notepad2 не только поддерживает кодировки ASCII и UTF-8, но и умеет их конвертировать. Позволяет откатывать нежелательные операции на много уровней назад. Поддерживает блочное выделение элементов текста и имеет нумерованные ст...
XnConvert – полезная утилита для конвертирования и первичной обработки фотографий и изображений. Работает с 400+ форматами. Поддерживает все популярные графические форматы. С помощью простых инструментов XnConvert можно регулировать яркость, гамму и контрастность. В приложении можно менять размер фотографий, накладывать фильтры и ряд популярных эффектов. Пользователь может добавлять водяные знаки и заниматься ретушью. При помощи приложения можно удалять мета-данные, обрезать файлы и вращать их. XnConvert поддерживает журнал, в котором пользователь увидит всю подробную информацию о своих недавних манипуляциях с изображениями.
В интернете очень много программ, позволяющих редактировать исходный код другой программы, файла и др. Однако большинство из подобных программ являются всего лишь текстовым редактором наподобие блокнота. Отличаются они от вышеуказанного редактора лишь тем, что имеют подсветку синтаксиса. Однако в некоторых случаях, такого функционала программы оказывается недостаточно. Программисту бывает необходимо быстро находить различные части документа. И вот, наконец-то, в появилась программа, позволяющая решить эту проблему. Программа называется SynWrite. Её отличительная особенность – наличие навигационной панели с деревом, котор...
Что это за файл - HTA?Файлы с расширением.HTA содержат HTML-код и возможный код сценария на языке VBScript или JScript и обычно могут запускаться в окне веб-браузера. Файлы HTA в Windows выполняются узлом приложения Microsoft HTML - Mshta.Exe - после двойного щелчка по ним.
Если файл HTA находится в Интернете, браузер обычно предоставляет диалоговое окно с вопросом, хотите ли вы запустить или сохранить файл. Файл HTA можно создать, изменив расширение файла с на.HTA.
Программа(ы), умеющие открыть файл .HTA Windows Mac OSЕсли появилась ситуация, в которой Вы не можете открыть файл HTA на своем компьютере - причин может быть несколько. Первой и одновременно самой важной (встречается чаще всего) является отсутствие соответствующей аппликации обслуживающей HTA среди установленных на Вашем компьютере.
Самым простым способом решения этой проблемы является нахождение и скачивание соответствующей аппликации. Первая часть задания, уже выполнена, - программы для обслуживания файла HTA Вы найдете ниже. Теперь достаточно скачать и установить соответствующую аппликацию.
В дальнейшей части этой страницы Вы найдете другие возможные причины, вызывающие проблемы с файлами HTA.
Возможные проблемы с файлами в формате HTAОтсутствие возможности открытия и работы с файлом HTA, совсем не должен значить, что мы не имеем установленного на своем компьютере соответствующего программного обеспечения. Могут выступать другие проблемы, которые также блокируют нам возможность работы с файлом HTML Program Format. Ниже находится список возможных проблем.
Если Вы уверены, что все перечисленные поводы отсутствуют в Вашем случае (или были уже исключены), файл HTA должен сотрудничать с Вашими программами без каких либо проблем. Если проблема с файлом HTA все-таки не решена, это может значить, что в этом случае появилась другая, редкая проблема с файлом HTA. В таком случае остается только помощь специалиста.
.a6p | Adobe Authorware Application Format |
.action | Mac OS X Automator Action Format |
.actm | Autodesk AutoCAD Action Macro Format |
.ahk | AutoHotkey Script Format |
.air | Adobe AIR Rich Internet Applications |
.apk | Google Android Package Format |
.app | MAC Application Package Or Core System Service Format |
.applescript | AppleScript Script Format |
Если Вы хотите связать какой-то файл с новой программой (напр. moj-plik.HTA) Вы можете воспользоваться двумя вариантами. Первый и самый простой - это нажатие правой кнопкой мышки на избранный файл HTA. Из открытого меню выберите опцию Выбрать программу по умолчанию" , затем опцию "Пересматривать" и найти требуемую программу. Всю операцию необходимо утвердить нажатием кнопки OK.
Есть ли универсальный метод открытия неизвестных файлов?Многие файлы содержат данные в виде текста или чисел. Возможно, что во время открытия неизвестных файлов (напр. HTA) популярный в системе Windows простой редактор текста, которым является Notatnik позволит нам увидеть часть данных, закодированных в файле. Этот метод позволяет просмотреть содержимое многих файлов, однако не в такой форме, как программа, предназначенная для их обслуживания.
Мы надеемся, что помогли Вам решить проблему с файлом HTA. Если Вы не знаете, где можно скачать приложение из нашего списка, нажмите на ссылку (это название программы) - Вы найдете более подробную информацию относительно места, откуда загрузить безопасную установочную версию необходимого приложения.
Посещение этой страницы должно помочь Вам ответить конкретно на эти, или похожие вопросы:
Если после просмотра материалов на этой странице, Вы по-прежнему не получили удовлетворительного ответа на какой-либо из представленных выше вопросов, это значит что представленная здесь информация о файле HTA неполная. Свяжитесь с нами, используя контактный формуляр и напишите, какую информацию Вы не нашли.
Что еще может вызвать проблемы?Поводов того, что Вы не можете открыть файл HTA может быть больше (не только отсутствие соответствующего приложения).
Во-первых
- файл HTA может быть неправильно связан (несовместим) с установленным приложением для его обслуживания. В таком случае Вам необходимо самостоятельно изменить эту связь. С этой целью нажмите правую кнопку мышки на файле HTA, который Вы хотите редактировать, нажмите опцию "Открыть с помощью"
а затем выберите из списка программу, которую Вы установили. После такого действия, проблемы с открытием файла HTA должны полностью исчезнуть.
Во вторых
- файл, который Вы хотите открыть может быть просто поврежден. В таком случае лучше всего будет найти новую его версию, или скачать его повторно с того же источника (возможно по какому-то поводу в предыдущей сессии скачивание файла HTA не закончилось и он не может быть правильно открыт).
Если у Вас есть дополнительная информация о расширение файла HTA мы будем признательны, если Вы поделитесь ею с пользователями нашего сайта. Воспользуйтесь формуляром, находящимся и отправьте нам свою информацию о файле HTA.
ВведениеДо определенного момента развития информационных технологий программы могли создавать только профессионалы в области программирования, с появлением и последующим развитием скриптовых языков, а также браузерных технологий, создание приложений стало более простым для обычного пользователя компьютера. Итак, HTA (HTML Application) - это простая технология, позволяющая создавать полезные приложения даже без знания серьезных языков программирования.
Создать HTA-приложение можно, просто написав HTML-страницу и сохранив ее с расширением.hta, которое обрабатывается программой mshta.exe, её задача - обеспечить связь вашей программы с браузером. Так как такие приложения используют движок браузера, то они объединяют в себе все их возможности - их объектную модель, разметку страницы (HTML), каскадные листы стилей (CSS), скрипты (VBS и JS). Также на такие приложения не накладывается ограничения безопасности - они работают как любой исполняемый файл.
То есть при помощи HTML создается абсолютно любой пользовательский интерфейс, причем с минимальными усилиями и без каких-либо существенных ограничений, логика программы организуется кодом на Java Script или Visual Basic Script, а само приложение выходит за рамки браузера - программа на стадии выполнения ничем не будет отличаться от обычных оконных приложений для Windows - запущенное приложение будет присутствовать на панели задач, иметь собственные окно, меню и значок. Хотя здесь нужно оговориться: программа не будет видна среди запущенных приложений в диспетчере задач, единственное средство, которым можно контролировать запущенную программу - это процесс mshta.exe.
Создание приложенияHTA-приложения можно писать в любом текстовом редакторе или специализированном HTML-конструкторе. Я, например, пользуюсь программой Notepad2 .
Чтобы создать новое приложение, откроем блокнот, скопируем туда структуру HTML документа и сохраним как htm-файл.
Моё HTA-приложение Мое тестовое HTA-приложение
Итак, мы получили HTML-документ, который уже можно посмотреть в браузере. Теперь, чтобы сделать из этой страницы HTA-приложение, необходимо изменить расширение HTML-документа на.hta, после чего его можно запустить двойным щелчком по файлу.
Для того чтобы полностью использовать возможности таких приложений, необходимо в раздел включить тэг . Преобразуем наш тестовый файл таким образом:
Моё HTA-приложение Моё тестовое HTA-приложение
Расширение.hta указывает системе, как работать с приложением, а специальный тэг указывает, как отображать окно. Этот тэг предоставляет набор атрибутов, управляющих свойствами окна приложения.
Атрибуты и свойства тегаИтак, чтобы указать HTA-приложению, как отобразить окно программы, необходимо задать атрибуты тега .
Помимо управлением окном приложения, этот тег также дает возможность обращаться к свойствам приложения из скриптов, расположенных в коде HTA-приложения. Стоит заметить, что все свойства этого тега доступны только для чтения.
Атрибут и свойство idОпределяет идентификатор объекта - уникального имени внутри файла HTA-приложения.
Атрибут и свойство ApplicationNameСодержит имя приложения. Если свойствоSingleInstanceустановлено в "True", то значение ApplicationName автоматически проверяется перед запуском экземпляра приложения. Чтобы проверка была успешной, значение ApplicationName должно быть уникальным. То есть, значение свойства ApplicationName используется для идентификации единственности запущенного приложения.
Атрибут и свойство BorderСодержит тип бордюра окна. Свойство Border влияет на толщину бордюра и действительно только для окон HTA, у которых есть панель заголовка и сам заголовок. УстанавливаяBorderв "None", вы убираете панель заголовка, иконку программы, и кнопки максимизирования и минимизирования. Это свойство может быть использовано совместно со свойством BorderStyle. Возможные значения:
Атрибут и свойство 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 приложения. Возможные значения:
В данном примере используются все атрибуты тега , несмотря на то, что значения некоторых атрибутов перекрываются другими параметрами, или некоторые значения уже заданы по умолчанию и не требуют объявления. Это сделано для того, чтобы показать, как использовать все атрибуты данного тега. В обычной практике объявляют только те атрибуты, значения которых нужно изменить.
Моё HTA-приложение
Пример использования атрибутов HTA-приложения
Так как HTA-приложения, по сути, являются HTML-страничками, то в них можно использовать скриптовые языки. Так как я хорошо знаю язык Visual Basic Script , то все последующие примеры будут основаны на нем, тем не менее Вы можете использовать как VBS, так и JS для создания своих приложений.
Скрипты пишутся в теге и располагаются в разделе либо во внешнем файле. В разделе скриптов описывают действия, которые выполняются при определенных событиях элементов формы приложения. Например, чтобы приложение выполнило скрипт при загрузке формы (инициализации программы), необходимо в теге указать процедуру, которая должна запуститься по событию OnLoad, а сами действия описать в теге .
Наиболее востребованным скриптом при загрузке формы является изменение размеров окна и размещение его по центру экрана.
Пример использования скриптовИзменим наш пример следующим образом: удалим неиспользуемые атрибуты тега , добавим скрипт изменения размера окна, добавим скрипт вывода версии скрипта на форму, а содержание формы оформим невидимой таблицей для того, чтобы каждый элемент стоял на своем месте вне зависимости от содержания формы.
Моё HTA-приложение " Процедура инициализации окна формы Sub WindowOnLoad " Размер окна iWidth = 800 iHeight = 600 " Разрешение экрана по умолчанию iHorizontal = 1024 iVertical = 768 " Получение текущего разрешения экрана 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 " Изменение размера окна и его центрирование iLeft = (iHorizontal - iWidth) / 2 iTop = (iVertical - iHeight) / 2 Self.Focus() Self.resizeTo iWidth, iHeight Self.moveTo iLeft, iTop " Вывод версии приложения на форму Version_Div.InnerHTML = "Версия: " & oHTA.Version End Sub
Моё HTA-приложение |
Данное приложение имеет следующие вид: |
Версия: X.X |
HTA-приложения очень удобны для централизации сценариев управления ИТ-инфраструктурой компании, которые администратор использует повседневно. Прежде чем мы создадим такое приложение, необходимо ознакомиться с особенностями взаимодействия скриптов HTA-приложений с операционной системой.
Взаимодействие приложения с операционной системой осуществляется путем внедрения в код специальных скриптов. Такие скрипты не просто выполняют логику приложения, они через специальные библиотеки отправляют запросы операционной системе, а операционная система возвращает им запрошенные данные или выполняет необходимые действия.
Методы и свойства корневого класса WScriptВ HTA нельзя напрямую использовать методы и свойства базового класса WScript. Методы CreateObject(.), GetObject(), ConnectObject(, ), DisconnectObject() вызываются без указания родительского класса, а все остальные методы базового класса не доступны для использования.
Иначе говоря, нельзя вызвать такой простой, но очень полезный метод, как WScript.Sleep. Чтобы обойти это ограничение, необходимо использовать методы с аналогичными действиями из других библиотек. Ниже представлен пример процедуры, которая замещает отсутствующий метод WScript.Sleep.
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
Данная процедура использует такое свойство стандартной команды ping, что интервал между отправками пакетов к хосту 1 секунда. То есть если нам требуется задержка в выполнении сценария в 1 секунду, то нужно отправить 2 пакета, интервал между ними и будет 1 секунда. Второй момент данного способа в том, что пакеты посылаются на хост-заглушку 127.0.0.1 - то есть самому себе, поэтому время ответа от хоста равно миллисекундам и мало влияет на расчет времени между отправками пакетов. Третий момент - это выполнение команды ping в скрытом режиме.
Методы и свойства класса ShellДля работы с операционной системой используется специальный класс Shell, который позволяет выполнять такие операции как запуск программ, изменение реестра, создание ярлыков, доступ к системным папкам и системным переменным, доступ к системному журналу.
Наиболее востребованной процедурой являются запуск внешнего приложения. Ниже представлен пример процедуры запуска приложения.
Sub RunApplication(sApplication) sCommandLine ="" Set oShell = CreateObject("Wscript.Shell") Select Case sApplication Case "CommandPrompt" sCommandLine = "%ComSpec%" Case "TestScript" sCommandLine = "%COMSPEC% /C CScript C:\Scripts\Test.vbs" Case "FarManager" sCommandLine = "C:\FarManager\Far.exe" Case "Notepad" sCommandLine = "notepad.exe" Case Else sCommandLine ="" End Select If Len(sCommandLine) > 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 InstrumentationWindows 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", в которой разместим несколько файлов:
Листинг файла "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-приложение | |
Добро пожаловать | |
Версия: X.X |
Теперь, когда структура формы готова, необходимо создать таблицу стилей, которая и будет определять внешний вид всех объектов формы. Если вы уже заметили, из разметки формы пропали все атрибуты, отвечающие за отображение объектов - теперь все атрибуты определяются 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 или как веб-страничку превратить в программу
Ну так вот. Открыв файлик *.hta тектовым редактором, я, как и ожидал, увидел кучу тегов. Все, вроде, понятно и доступно. Единственное отличие - поле
в разделе HEAD
. В этом поле указываются параметры, относящиеся к внешнему виду окна, в котором будет отображаться HTML содержимое, поскольку, файлик *.hta является вполне себе самодостаточным и не требует ничего, кроме наличия на компьютере ослика IE версии > 5.0. А параметры там вот такие:
APPLICATIONNAME
Атрибут - APPLICATIONNAME, свойство - applicationName. Содержит имя приложения. Это свойство доступно только для чтения и не имеет значения по умолчанию. Если свойство singleInstance установлено в true, значение applicationName автоматически проверяется перед запуском экземпляра приложения. Чтобы проверка была успешной, значение applicationName должно быть уникальным. Таким образом, значение свойства applicationName используется для идентификации единственности запущенного приложения, независимо от адреса URL, используемого для доступа к нему.
BORDER
Атрибут - BORDER, свойство - border. Содержит тип бордюра окна HTML приложения. Это свойство доступно только для чтения и имеет значение по умолчанию "thick". Свойство border влияет на толщину бордюра и действительно только для окон HTA, у которых есть панель заголовка и сам заголовок. Устанавливая border в "none", вы убираете панель заголовка, иконку программы, и кнопки максимизирования и минимизирования. Это свойство может быть использовано со свойством borderStyle.
Возможные значения:
thick
По умолчанию. Толстый бордюр окна, плюс бордюр для изменения размера окна.
dialog
Бордюр диалогового окна.
none
Окно без бордюра.
thin
Тонкий бордюр окна с заголовком.
BORDERSTYLE
Атрибут - BORDERSTYLE, свойство - borderStyle. Содержит стиль бордюра клиентской области окна HTML приложения. Это свойство доступно только для чтения и имеет значение по умолчанию "normal". Свойство borderStyle устанавливает стиль для бордюра содержимого окна, в то время как свойство border контролирует бордюр окна приложения.
Возможные значения:
normal
По умолчанию. Нормальный бордюр.
complex
Приподнятый и утопленный бордюр.
raised
Приподнятый 3-D бордюр.
static
3-D бордюр, обычно используемый для окон, не обрабатывающих ввод пользователя.
sunken
Утопленный 3-D бордюр.
CAPTION
Атрибут - CAPTION, свойство - caption. Определяет, будет ли в окне HTML приложения отображаться панель заголовка. Это свойство доступно только для чтения и имеет значение по умолчанию "yes". Заголовок приложения (title) отображается только тогда, когда свойство caption установлено в yes. Отключение свойства caption также отключит кнопки "Свернуть", "Развернуть" и программную иконку. В этом случае вы должны предоставить альтернативный способ выхода из приложения, например, кнопку, вызывающую метод close объекта window.
Возможные значения:
yes
По умолчанию. Панель заголовка отображается.
no
Панель заголовка не отображается.
COMMANDLINE
Свойство - commandLine. Строка, которая содержит путь и параметры командной строки, которые использовались для запуска HTA-приложения. Это свойство доступно только для чтения и не имеет значения по умолчанию. Если HTA-приложение было запущено с использованием HTTP протокола, свойство commandLine содержит пустую строку.
CONTEXTMENU
Атрибут - CONTEXTMENU, свойство - contextMenu. Определяет, появляется ли контекстное меню при нажатии на правую кнопку мыши. Это свойство доступно только для чтения и имеет значение по умолчанию "yes".
Возможные значения:
yes
По умолчанию. Контекстное меню появляется.
no
Контекстное меню не появляется.
ICON
Атрибут - ICON, свойство - icon. Определяет путь к файлу иконки, используемой в HTML приложении. Это свойство доступно только для чтения и имеет значение по умолчанию "System Application Icon". HTA использует системную иконку, если значение не определено. Атрибут icon распознаёт стандартные файлы с расширением.ico, содержащие изображение размером 32x32 пиксела.
INNERBORDER
Атрибут - INNERBORDER, свойство - innerBorder. Определяет, отображается ли внутренняя 3-D граница. Это свойство доступно только для чтения и имеет значение по умолчанию "yes".
Возможные значения:
yes
По умолчанию. Внутренняя 3-D граница отображается.
no
Внутренняя 3-D граница не отображается.
MAXIMIZEBUTTON
Атрибут - MAXIMIZEBUTTON, свойство - maximizeButton. Определяет, отображается ли кнопка "Развернуть" на панели заголовка окна HTML приложения. Это свойство доступно только для чтения и имеет значение по умолчанию "yes". Для того, чтобы отображались кнопки "Свернуть" и "Развернуть", окно должно иметь панель заголовка (атрибут caption).
Возможные значения:
yes
По умолчанию. Кнопка "Развернуть" отображается.
no
Кнопка "Развернуть" не отображается.
MINIMIZEBUTTON
Атрибут - MINIMIZEBUTTON, свойство - minimizeButton. Определяет, отображается ли кнопка "Свернуть" на панели заголовка окна HTML приложения. Это свойство доступно только для чтения и имеет значение по умолчанию "yes". Для того, чтобы отображались кнопки "Свернуть" и "Развернуть", окно должно иметь панель заголовка (атрибут caption).
Возможные значения:
yes
По умолчанию. Кнопка "Свернуть" отображается.
no
Кнопка "Свернуть" не отображается.
NAVIGABLE
Атрибут - NAVIGABLE, свойство - navigable. Определяет, в каком окне будут открываться загружаемые документы: в основном окне HTML приложения, или в новом окне. Это свойство доступно только для чтения и имеет значение по умолчанию "no".
Возможные значения:
no
По умолчанию. Будут открываться в новых окнах.
yes
Будут открываться в основном окне.
SCROLL
Атрибут - SCROLL, свойство - scroll. Определяет, будут ли отображаться полосы прокрутки. Это свойство доступно только для чтения и имеет значение по умолчанию "yes". Установка значения свойства body.scroll равным "no" - это альтернативный способ предотвратить появление полос прокрутки.
Возможные значения:
yes
По умолчанию. Полосы прокрутки отображаются.
no
Полосы прокрутки не отображаются.
auto
Полосы прокрутки появляются только тогда, когда содержимое документа не умещается в клиентской области окна.
SCROLLFLAT
Атрибут - SCROLLFLAT, свойство - scrollFlat. Определяет, в каком виде будут отображаться полосы прокрутки: в 3-х мерном, или в 2-х мерном виде. Это свойство доступно только для чтения и имеет значение по умолчанию "no".
Возможные значения:
yes
Полосы прокрутки двухмерные.
no
По умолчанию. Полосы прокрутки трёхмерные.
SELECTION
Атрибут - SELECTION, свойство - selection. Определяет, может ли содержимое документа быть выбрано мышкой или с помощью клавиатуры. Присвоение атрибуту SELECTION значения "no" запрещает появление контекстного меню. В этом случае присвоение атрибуту CONTEXTMENU значения "yes" не произведёт никакого эффекта. Использование в документе редактируемых элементов переопределяет значение selection. Любой объект может быть выбран, когда значение свойства contentEditable установлено в true где угодно в HTML приложении. Это свойство доступно только для чтения и имеет значение по умолчанию "yes".
Возможные значения:
yes
По умолчанию. Содержимое может быть выбрано.
no
Содержимое не может быть выбрано.
SHOWINTASKBAR
Атрибут - SHOWINTASKBAR, свойство - showInTaskBar. Определяет, будет ли HTML приложение появляться на панели задач Windows. Свойство showInTaskBar не влияет на появление приложения в списке приложений, который появляется, когда пользователь нажимает ALT+TAB. Это свойство доступно только для чтения и имеет значение по умолчанию "yes".
Возможные значения:
yes
По умолчанию. Приложение отображается на панели задач.
no
Приложение не отображается на панели задач.
SINGLEINSTANCE
Атрибут - SINGLEINSTANCE, свойство - showInTaskBar. Определяет, может ли быть запущенно больше одного экземпляра HTML приложения одновременно. Это свойство доступно только для чтения и имеет значение по умолчанию "no".
Возможные значения:
yes
Только один экземпляр приложения может быть запущен.
no
По умолчанию. Может быть запущенно несколько экземпляров приложения одновременно.
SYSMENU
Атрибут - SYSMENU, свойство - sysmenu. Определяет, отображается ли системное меню в HTML приложении. Системное меню HTA обозначается программной иконкой в левом углу панели заголовка. Системное меню HTA показывает все команды, входящие в стандартное системное меню Windows, включая "Восстановить", "Переместить", "Размер", "Свернуть", "Развернуть", и "Закрыть". Это свойство доступно только для чтения и имеет значение по умолчанию "yes".
Возможные значения:
yes
По умолчанию. Системное меню отображается в панели заголовка.
no
Системное меню не отображается в панели заголовка.
VERSION
Атрибут - VERSION, свойство - version. Определяет номер версии HTML приложения (строка). Это свойство доступно только для чтения и не имеет значения по умолчанию.
WINDOWSTATE
Атрибут - WINDOWSTATE, свойство - windowState. Определяет начальные размеры окна HTML приложения. Это свойство доступно только для чтения и имеет значение по умолчанию "normal".
Возможные значения:
normal
По умолчанию. Размер окна - стандартный размер для Microsoft Internet Explorer.
minimize
Появляется только заголовок окна на панели задач.
maximize
Окно появляется развёрнутым во весь экран.
А возможность использования в таких файлах Java и VB скриптов позволяет делать вообще все что угодно. Кроме того, исполняются они в зоне "Мой компьютер", как и обычные приложения, что существенно снижает требования к безопасности скриптов со стороны IE.
В общем, приложив немного фантазии я накатал простенькую менюшку для запуска приложений с флешки, которую и выкладываю тут. Смотрите, разбирайтесь.