1

Тема: HTA: создание диалогов с помощью ActiveX Forms.*

В ветке реестра HKEY_CLASSES_ROOT, как известно, кроме задания соответствия расширений файлов и обрабатывающих их приложений, есть ещё и разделы, относящиеся к ActiveX-компонентам. В частности, если открыть эту ветку и найти разделы, начинающиеся на "Forms." (довольно удобно нажать один раз "F" и попасть сразу на разделы, начинающиеся с "F"), то там можно найти следующие элементы:

FormHost.FormHost
FormHost.FormHost.1
Forms.CheckBox.1
Forms.ComboBox.1
Forms.CommandButton.1
Forms.Form.1
Forms.Frame.1

И т.д. Если, например, попытаться создать объект "Forms.Form.1" через CreateObject, то вы столкнётесь с тем, что зоны для отрисовки у него нет, и метод Show тоже отсутствует. Но, как ни странно, можно вставить этот объект в html-страницу с помощью тега OBJECT:

<OBJECT id="Form1" style="width:100%;height:100%;" classid="clsid:C62A69F0-16DC-11CE-9E98-00AA00574A4F"></OBJECT>

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

<HTA:APPLICATION
ID="APPLICATION"
APPLICATIONNAME="Application"
BORDERSTYLE="normal"
CAPTION="yes"
MAXIMIZEBUTTON="yes"
MINIMIZEBUTTON="yes"
SHOWINTASKBAR="yes"
SYSMENU="yes"
VERSION="1.0"
WINDOWSTATE="normal" 
INNERBORDER="no"
SCROLL="no"
CONTEXTMENU="yes"
/>

<BODY leftmargin=0 topmargin=0 rightmargin=0 bottommargin=0>
    <OBJECT id="Form1" style="width:100%;height:100%;" classid="clsid:C62A69F0-16DC-11CE-9E98-00AA00574A4F"></OBJECT>
</BODY>

<SCRIPT language=vbscript>
    Dim TextBox1
    Set TextBox1 = Form1.Controls.Add("Forms.TextBox.1", "TextBox1", True)
    TextBox1.left = 10
    TextBox1.top = 20
    TextBox1.width = 100

    Dim Image1
    Set Image1 = Form1.Controls.Add("Forms.Image.1", "Image1", True)
    Image1.left = 50
    Image1.top = 50
    Image1.width = 320
    Image1.height = 240

    Set Image1.Picture = LoadPicture("C:\windows\Web\Wallpaper\Windows XP.jpg")

    Const fmPictureSizeModeClip = 0 'Crops any part of the picture that is larger than the form or page (default).

    Const fmPictureSizeModeStretch = 1 'Stretches the picture to fill the form or page. This setting distorts the picture in either the horizontal or vertical direction.

    Const fmPictureSizeModeZoom = 3 'Enlarges the picture, but does not distort the picture in either the horizontal or vertical direction. 

    Image1.PictureSizeMode = fmPictureSizeModeStretch

</SCRIPT>

Автор идеи - Xameleon.

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