1 (изменено: alexii, 2014-08-25 06:18:44)

Тема: HTA: Как убрать белое окно HTA при загрузке

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

Почему-то прогресс бар не считает проценты.


<html>
  <head>
        <title>Прогресс бар</title>
        <hta:application
            id = "oHTA"
            ApplicationName = "Старт"
            Border = "Dialog"
            BorderStyle = "Complex"
            Caption = "Yes"
            ContextMenu = "No"
            Icon = "C:\Windows\write.exe"
            InnerBorder = "No"
            MaximizeButton = "Yes"
            MinimizeButton = "Yes"
            Navigable = "No"
            Scroll = "No"
            ScrollFlat = "No"
            Selection = "No"
            ShowInTaskBar = "No"
            SingleInstance = "Yes"
            SysMenu = "Yes"
            Version = "1.0"
            WindowState = "Normal"
        />


        <script language="vbscript">
        
                    
            Dim bar, i
            Set bar = new IEProgBar
            With bar
                .Move -1, -1, 500, -1
                .Units = 5
                .Show
                WScript.Sleep 500
                .Caption = "Выполнение: 0%..."
                WScript.Sleep 500
                For i = 0 to 4
                    WScript.Sleep 500 ' вместо этого здесь может быть ваш код, выполняющий нужную вам работу
                    .Caption = "Выполнение: " & Round((i+1)*100/5, 0) & "%..."
                    .Advance
                    MsgBox 1
                Next
            End With
            WScript.Sleep 1000
            Set bar = Nothing

            '--- //////////////////////////////////////////////////////////////////////////////////////////////
            '
            'Класс IEProgBar, который может быть вставлен в любой скрипт.
            'Чтобы создать индикатор прогресса, напишите:
            '
            'Dim ob
            'Set ob = New IEProgBar
            '
            'Индикатор прогресса создается в виде HTML файла,
            'который записывается в директорию временных файлов и открывается оттуда.
            '
            'Свойства и методы:
            '
            'Методы -
            '
            '    Show - показывает индикатор прогресса, записывая HTML файл, открывая его в IE и делая IE видимым.
            '    Advance - заполняет индикатор прогресса на одну ячейку.
            '    Move(Left, Top, Width, Height) - Изменение размеров и/или позиции окна.
            '        Используйте -1 для любого параметра, который вы не хотите менять.
            '        Размер по умолчанию - 400x120, положение окна определяет Windows.
            '    CleanIETitle - удаляет параметры настройки реестра, отвечающие за заголовок IE, делая заголовок IE более компактным.
            '        Это - глобальное изменение для IE, которое необратимо этим сценарием (тем не менее, это достаточно безопасное изменение).
            '
            'Свойства -
            '
            '    BackColor - 6-символьный шестнадцатеричный код цвета фона. По умолчанию - "E0E0E4".
            '    TextColor - 6-символьный шестнадцатеричный код цвета текста. По умолчанию - "000000".
            '    ProgressColor - 6-символьный шестнадцатеричный код цвета индикатора прогресса. По умолчанию - "0000A0".
            '    Title - текст заголовка окна. По умолчанию - "Ожидание".
            '    Caption - текст надписи в окне. По умолчанию - "Подождите..."
            '    Units - количество единиц индикатора прогресса. По умолчанию - 20.
            '
            '--- ///////////////////////////////////////////////////////////////////////////////////////////////

            '--------  КЛАСС IEProgBar ----------------------------------
            Class IEProgBar
                Private FSO, IE, BCol, TCol, ProgCol, ProgNum, ProgCaption, Q2, sTemp, iProg, ProgTitle

                Private Sub Class_Initialize()
                    On Error Resume Next
                    Set FSO = CreateObject("Scripting.FileSystemObject")
                    sTemp = FSO.GetSpecialFolder(2)
                    Set IE = CreateObject("InternetExplorer.Application") 
                    With IE
                        .AddressBar = False
                        .menubar = False
                        .ToolBar = False
                        .StatusBar = False
                        .width = 400
                        .height = 180
                        .resizable = False
                    End With    
                    BCol = "E0E0E4"              'цвет фона по умолчанию
                    TCol = "000000"              'цвет текста надписи по умолчанию
                    ProgCol = "0000A0"           'цвет индикатора прогресса по умолчанию
                    ProgNum = 20                 'количество единиц индикатора прогресса по умолчанию
                    ProgCaption = "Подождите..." 'надпись по умолчанию
                    ProgTitle = "Ожидание"       'заголовок окна по умолчанию
                    Q2 = chr(34) 'двойная кавычка (для HTML-вёрстки)
                    iProg = 0                    'заполнение индикатора прогресса
                End Sub

                Private Sub Class_Terminate()
                    On Error Resume Next
                    IE.Quit
                    Set IE = Nothing
                    Set FSO = Nothing
                End Sub

                Public Sub Show()
                    Dim s, i, TS
                    On Error Resume Next
                    s = "<HTML><HEAD><TITLE>" & ProgTitle & "</TITLE></HEAD>"
                    s = s & "<BODY SCROLL=" & Q2 & "NO" & Q2 & " BGCOLOR=" & Q2 & "#" & BCol & Q2 & " TEXT=" & Q2 & "#" & TCol & Q2 & ">"
                    If (ProgCaption <> "") Then
                        s = s & "<FONT FACE=" & Q2 & "arial" & Q2 & " SIZE=2><LABEL ID=" & Q2 & "Cap1" & Q2 & ">" & ProgCaption & "</LABEL></FONT><BR><BR>"
                    Else
                        s = s & "<BR>"
                    End If
                    s = s & "<TABLE BORDER=1><TR><TD><TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0><TR>"
                    For i = 1 to ProgNum
                        s = s & "<TD WIDTH=16 HEIGHT=16 ID=" & Q2 & "P" & Q2 & ">"
                    Next
                    s = s & "</TR></TABLE></TD></TR></TABLE><BR><BR></BODY></HTML>"         
                    Set TS = FSO.CreateTextFile(sTemp & "\iebar1.html", True)
                    TS.Write s
                    TS.Close
                    Set TS = Nothing
                    IE.Navigate "file:///" & sTemp & "\iebar1.html"
                    IE.visible = True
                End Sub
               
                'Метод Advance раскрашивает одну ячейку индикатора прогресса.
                'Переменная iProg отслеживает, сколько ячеек было раскрашено.
                'Каждая ячейка индикатора прогресса является тегом <TD> с идентификатором ID="P".
                'К этим тегам можно обратиться через Document.All.Item.
                Public Sub Advance()
                    On Error Resume Next
                    If (iProg < ProgNum) and (IE.Visible = True) Then
                        IE.Document.All.Item("P", (iProg)).bgcolor = Q2 & "#" & ProgCol & Q2
                        iProg = iProg + 1
                    End If   
                End Sub

                'Изменение размеров и/или позиции окна. Используйте -1 для любого параметра, который вы не хотите менять.
                Public Sub Move(PixLeft, PixTop, PixWidth, PixHeight)
                    On Error Resume Next
                    If (PixLeft > -1) Then IE.Left = PixLeft
                    If (PixTop > -1) Then IE.Top = PixTop
                    If (PixWidth > 0) Then IE.Width = PixWidth
                    If (PixHeight > 0) Then IE.Height = PixHeight
                End Sub

                'Удаление параметров настройки реестра, отвечающих за заголовок IE.
                'Это изменение не будет иметь эффекта при первом использовании, поскольку экземпляр IE уже был создан перед вызовом метода.
                Public Sub CleanIETitle()
                    Dim sR1, sR2, SH
                    On Error Resume Next
                    sR1 = "HKLM\Software\Microsoft\Internet Explorer\Main\Window Title"
                    sR2 = "HKCU\Software\Microsoft\Internet Explorer\Main\Window Title"
                    Set SH = CreateObject("WScript.Shell")
                    SH.RegWrite sR1, "", "REG_SZ"
                    SH.RegWrite sR2, "", "REG_SZ"
                    Set SH = Nothing
                End Sub

                '------------- Установка цвета фона: ---------------------

                Public Property Let BackColor(sCol)
                    If (TestColor(sCol) = True) Then BCol = sCol
                End Property
             
                '------------- Установка цвета текста: --------------------

                Public Property Let TextColor(sCol)
                    If (TestColor(sCol) = True) Then TCol = sCol
                End Property
             
                '------------- Установка цвета индикатора прогресса: ------

                Public Property Let ProgressColor(sCol)
                    If (TestColor(sCol) = True) Then ProgCol = sCol
                End Property

                '------------- Установка заголовкеа окна: ------------------

                Public Property Let Title(sCap)
                    ProgTitle = sCap
                End Property
             
                '------------- Установка текста: ----------------------------

                Public Property Let Caption(sCap)
                    On Error Resume Next
                    ProgCaption = sCap
                    IE.Document.parentWindow.Cap1.innerText = sCap
                End Property

                '----- Установка количества единиц индикатора прогресса: -----

                Public Property Let Units(iNum)
                    ProgNum = iNum
                End Property
             
                'Проверка корректности заданного цвета: цвет должен содержать 6 символов 0-9 или A-F.
                'Возвращается True (цвет корректен) или False.
                Private Function TestColor(Col6)
                    Dim iB, sB, iB2, Boo1
                    On Error Resume Next
                    TestColor = False
                    If (Len(Col6) <> 6) Then Exit Function
                    For iB = 1 to 6
                        sB = Mid(Col6, iB, 1)
                        iB2 = Asc(UCase(sB))
                        If ((iB2 > 47) and (iB2 < 58)) or ((iB2 > 64) and (iB2 < 71)) Then
                            Boo1 = True
                        Else
                            Boo1 = False
                            Exit For
                        End If
                    Next
                    If (Boo1 = True) Then TestColor = True
                End Function
            End Class
        
        
        </script>
        

            
        
  </head>
    
  <body onload="WindowOnLoad()">
 
    
    
    <td id="DynamicContent_Cell">
        <div id="DynamicContent_Div">
            Добро пожаловать!!!
        </div>
    </td>

  </body>
    

</html>

2 (изменено: omegastripes, 2014-08-23 23:42:52)

Re: HTA: Как убрать белое окно HTA при загрузке

wildwolf007, не запускал Ваш код, но, на мой взгляд, целесообразно добавить в <HEAD> в самом начале скрипта код, прячущий окно HTA за пределами экрана (Window.MoveTo -32000, -32000), чтобы не отсвечивало, и уже после этого создавать прогресс-бар, а как тот отработает - вернуть окно обратно. Касательно прогресс-бара - я бы создал отдельное окно HTA без использования IE и временных файлов (вот пример динамического создания окна). В этом случае код самого прогрес-бара придется допилить, и если за основу брать имеющийся код для IE, следует обратить внимание, что свойства и методы экземпляра "InternetExplorer.Application" (тип IWebBrowser2) заметно отличаются от объекта window окна HTA (тип HTMLWindow2), не смотря на то, что их свойства .document, представляющие HTML DOM, идентичны (тип HTMLDocument).

Щт Уккщк Куыгьу Туче
’ҐЄгй п Є®¤®ў п бва Ёж : 1251

3 (изменено: alexii, 2014-08-25 06:20:07)

Re: HTA: Как убрать белое окно HTA при загрузке

Ок  omegastripes спасибо буду пробовать.

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

Логика программы которую сейчас написал:
1) Считываются 5000 файлов.
2) Из файлов берется первые 2 строки - это название типов заявок.
3) Данные типы выводятся на форму
4) после на форме выводятся типы заявок и пользователь выбирает необходимый тип и по данному типу начинает производить поиск когда вводим какие -либо фразы происходит сортировка массива и отображаются файлы в которых есть данные совпадения потом пользователь выбирает отсортированные файлы и может сохранить.

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

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

Подобрал 2 прогресс бара:
1)

<html>
<head>
<title>Тест</title>
<meta http-equiv="MSThemeCompatible" content="Yes">
<meta name='resource-type' content='application'>
<meta name='author' content='Shotman0'>
<meta name='copyright' content='Copyright (c) 2007 by shotman'>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251'>

<script language="jscript" type="text/jscript">

function resizewin(w,h){
        var top = (screen.width-w)/2;
        var left = (screen.height-h)/2;
        resizeTo(w,h);
        moveTo(top,left);
}
resizewin(800,570);
function doNothing(){return true;}
//window.onerror = doNothing;

    function Start(){
        var d = document;
        var line = d.getElementById('process_line');
        var text = d.getElementById('text');
        var line_p = line.firstChild;
        var l = parseInt(document.getElementById('img').style.width.substring(0,(document.getElementById('img').style.width.length-1)));
        d.getElementById('bar').style.visibility = 'visible';
        Go();
    }
    
    function Go(){
        var step = 1;
        var l = parseInt(document.getElementById('img').style.width.substring(0,(document.getElementById('img').style.width.length-1)));
        document.getElementById('img').style.width = (l+parseInt(step))+"%";
        document.getElementById('text').innerHTML = (l+parseInt(step))+"%";
        if(document.getElementById('img').style.width!='100%'){setTimeout('Go()',1)}
        else{
            animFade(document.getElementById('oppo'),0);
            document.getElementById('oppo').display = "none";
        }
    }
    
    function Reset(){
        var d = document;
        var line = d.getElementById('process_line');
        var text = d.getElementById('text');
        var line_p = line.firstChild;
        var l = line_p.style.width.substring(0,(line_p.style.width.length-1));    
        d.getElementById('bar').style.visibility = 'hidden';
        line_p.style.width = "0%";
        text.innerHTML = "0%";
    }
    
    function animFade(ref, counter){
        var f = ref.filters, done = (counter==100);
        if(f){
            for (i=ref.filters.alpha.opacity; i>0; i--){            
                setTimeout('document.getElementById("oppo").filters.alpha.opacity=parseInt(document.getElementById("oppo").filters.alpha.opacity-1);',i*2);
               }
        }
        else ref.style.opacity = ref.style.MozOpacity = counter/100.1;
}

</script>

<style>

*{
    padding:0px;
    margin:0px;
    font:11px Tahoma, Verdana, Arial, Helvetica, sans-serif;
    color:#000000;
}
table{
    border:0px;
    border-collapse:collapse;
}

#process_line{
    width:300px;
    height:5px;
    background-color:#FFFFFF;
    border:#CCCCCC 1px solid;
    text-align:left;
    margin-top:3px;
}

#bar{
    text-align:center;
    padding-top:200px;
    visibility:hidden;
}

#text{
    font-size:10px;
    color:#0000CC;
    font:Verdana, Arial, Helvetica, sans-serif;
}

</style>
<body bgcolor="#ffffff" onLoad="Start()">

<hta:application
    id="processbar"
    applicationName="processbar"
    contextMenu="no"
    icon="files/data/admin.ico"
    scroll="no"
    scrollFlat="yes"
    selection="no"
    singleInstance="yes"
    version="1.0"
    navigable="yes"
    windowstate="normal"
/>

<div id="oppo" style="position:relative; z-index:99; height:150px; background-color:#FFFFFF; filter:Alpha(Opacity=100)">&nbsp;<div>
<div id="bar">
<span id="text">&nbsp;</span>
<div id="process_line"><img id="img" style="background-color:#000099; width:0%; height:3px; filter:Alpha(Opacity=10, FinishOpacity=90, Style=1, StartX=X, StartY=Y, FinishX=X, FinishY=Y) " alt="" /></div>
</div>
</body>

</html>

2)



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<!--
Пример использования прогресс-бара на платформе HTA (Microsoft Internet Explorer 5.5)
По мотивам http://webo.in/articles/habrahabr/13-cpu-intensive-javascript/
Специально для http://www.script-coding.com/
Calpy, 2008
-->
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1251" />
<title>Process Bar</title>
<hta:application id="processbar" scroll="no" innerborder="no" icon="%windir%\notepad.exe" border="dialog"/>
<script>var w= {h: 200, w: 400}; window.resizeTo(w.w, w.h); window.moveTo((screen.width - w.w)/2, (screen.height - w.h)/2.5)</script>
<style>
<!--
body                {background-color: buttonface; text-align: center;}
input                 {font: normal 11px/11px verdana, sans-serif; margin: 1em;}

#div_progress        {position: relative; width: 300px; height: 20px; border: 0.5pt groove; background: white; margin-top: 50px; text-align: left;}
#div_progress div     {background: #316AC5; width: 0; height: 100%;}
-->
</style>
<script>
<!--
// реализация "прогресса"
function t_progress(qtotal, qstep_time, qcall_back)
{
    var astep_time= qstep_time || 40    // частота обновления, мс
    var astart= new Date().getTime()    // время начала работы
    var astep= astart                    // время последнего обновления
    var ais_run= true                    // флаг работы (при частом обновлении, после завершения работы процесса, могут оставаться необработанными запросы на обновление)

    function stop()                     // завершение работы
    {
        alert("Total duration: " + ((astep - astart)/1000) + " seconds")
        ais_run= false
        if (qcall_back) qcall_back()
    }
    this.is_step= function() {return new Date().getTime() - astep > astep_time}    // проверка на необходимость обновления (чтоб слишком часто не мигал, загружая систему)
    this.set= function(qval)            // установка значения (обновление)
    {
        astep= new Date().getTime()
        document.getElementById("div_progress").firstChild.style.width= (100*qval/qtotal) + "%"
        if (ais_run && qval >= qtotal) stop()
    }
}

// провервка работы "прогресса"
function test()
{
    // готовим данные какого-то процесса (здесь: сортировка массива)
    var data= new Array(1000); for (var i= 0; i < data.length; ++i) data[i]= Math.floor(data.length*Math.random())
    alert("Начальные данные:\n" + data)
    var i= 0 // важно делать глобальной относительно функции процесса

    // говорим, что надо делать после завершения процесса
    function outro()
    {
        alert("Конечные данные:\n" + data)
    }

    // собственно сам процесс
    var aprogress= new t_progress(data.length, 40, outro);                        // "прогресс": создаем
    (function ()
    {
        while (i < data.length)
        {
            for (var j= data.length; j > i; j--) if (data[j] < data[j - 1]) {var v= data[j]; data[j]= data[j - 1]; data[j - 1]= v}
            ++i

            if (aprogress.is_step()) {setTimeout(arguments.callee, 0); break}    // "прогресс": проверка по времени, надо ли обновлять
        }
        aprogress.set(i)                                                        // "прогресс": установка значения (обновление)
    })()

    /* outro() // мы уже здесь, а процесс-то фактически еще идет... поэтому outro() вызывается как callback-функция */
}
//-->
</script>
</head>


<body>
<div id="div_progress"><div></div></div>
<input type="button" value="Старт" onclick="this.disabled= true; test()">
</body>
</html>


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

А на IE вроде все написано на VBS поэтому и думал использовать VBS.

4

Re: HTA: Как убрать белое окно HTA при загрузке

wildwolf007, для оформления кода предназначен тэг «code», а не «spoiler».

5

Re: HTA: Как убрать белое окно HTA при загрузке

wildwolf007, в качестве альтернативы можно держать все элементы GUI в одном файле HTA, но показывать только один из них. Например, в одном DIV'e разместить прогресс-бар, в другом все остальлные элементы, при
этом оба DIV'а скрыть <DIV style = 'display: none;'><!-- элементы --></DIV>. При загрузке HTA сразу изменить размеры окна под размеры прогресс-бара, и показать первый DIV, содержащий прогресс-бар. Когда необходимые файлы будут обработаны - вновь скрыть первый  DIV, изменить размеры окна под размеры основного GUI, и показать второй DIV.
Очевидный плюс такого подхода - не понадобиться создавать дополнительных окон. При желании (и некоторых джедайских навыках) можно даже генерировать тот же прогресс-бар динамически прямо в окне HTA, а после того как он отработает - просто удалить узел DOM, представляющий прогресс-бар.

Щт Уккщк Куыгьу Туче
’ҐЄгй п Є®¤®ў п бва Ёж : 1251

6

Re: HTA: Как убрать белое окно HTA при загрузке

Alexii - хотел просто что б мое сообщение не было сильно большим использовал 2 тега одновременно. На будущее буду использовать только code раз нельзя оба.
Omegastripes - спасибо за идею чето я об этом не подумал хотя постоянно пользуюсь этим. Единственное сейчас буду думать как из js передать значения в vbs.

7

Re: HTA: Как убрать белое окно HTA при загрузке

Alexii - хотел просто что б мое сообщение не было сильно большим использовал 2 тега одновременно. На будущее буду использовать только code раз нельзя оба.

Оба — можно, как Вы это делали в третьем коде. Но у Вас в первом и втором был только «spoiler», без «code».

8

Re: HTA: Как убрать белое окно HTA при загрузке

ок

9

Re: HTA: Как убрать белое окно HTA при загрузке

omegastripes  подскажите, а как можно использовать (Window.MoveTo -32000, -32000)??

10

Re: HTA: Как убрать белое окно HTA при загрузке

wildwolf007 пишет:

... как можно использовать (Window.MoveTo -32000, -32000)??

Код HTA

<HTML>
    <HEAD>
        <SCRIPT LANGUAGE="VBScript">
            Window.MoveTo -32000, -32000
        </SCRIPT>
        <TITLE>Sample</TITLE>
        <HTA:APPLICATION
            ID="oHTA"
            APPLICATIONNAME="myApp"
            BORDER="thick"
            BORDERSTYLE="normal"
            CAPTION="yes"
            ICON=""
            MAXIMIZEBUTTON="yes"
            MINIMIZEBUTTON="yes"
            SHOWINTASKBAR="yes"
            SINGLEINSTANCE="no"
            SYSMENU="yes"
            VERSION="1.0"
            WINDOWSTATE="normal" />
        <SCRIPT LANGUAGE="VBScript">
            Window.Alert "OK to show window"
            Window.MoveTo 0, 0
        </SCRIPT>
    </HEAD>
    <BODY BGCOLOR="buttonface">
        Content
    </BODY>
</HTML>
Щт Уккщк Куыгьу Туче
’ҐЄгй п Є®¤®ў п бва Ёж : 1251

11

Re: HTA: Как убрать белое окно HTA при загрузке

omegastripes пишет:

wildwolf007, в качестве альтернативы можно держать все элементы GUI в одном файле HTA, но показывать только один из них. Например, в одном DIV'e разместить прогресс-бар, в другом все остальлные элементы, при
этом оба DIV'а скрыть <DIV style = 'display: none;'><!-- элементы --></DIV>. При загрузке HTA сразу изменить размеры окна под размеры прогресс-бара, и показать первый DIV, содержащий прогресс-бар. Когда необходимые файлы будут обработаны - вновь скрыть первый  DIV, изменить размеры окна под размеры основного GUI, и показать второй DIV.
Очевидный плюс такого подхода - не понадобиться создавать дополнительных окон. При желании (и некоторых джедайских навыках) можно даже генерировать тот же прогресс-бар динамически прямо в окне HTA, а после того как он отработает - просто удалить узел DOM, представляющий прогресс-бар.

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

12

Re: HTA: Как убрать белое окно HTA при загрузке

Скажите, а если я буду использовать символ "|"  возможно ли будет производить заполнение им ? Например в разделе VBScript выполняется цикл и при прохождении определенного значения производится выполнение процедуры и происходит заполнение определенным количеством символов:



Sub BarSimvol() 
 Simvol = Simvol &"|"
 Bar.InnerHTML = Simvol
End Sub

Возможно ли в HTA загрузить сначала всю разметку и все стили, а только потом начать выполнение цикла, который располагается в разделе VBScript и при выполнении цикла запускать процедуру BarSimvol()? И что б на форме было видно заполнение области символами "|".

13

Re: HTA: Как убрать белое окно HTA при загрузке

Вчера попробовал и с InnerHTML и с исчезновением и появлением:



            ' Видимость объектов
            Sub Hide(Object)
                Object.style.display = "none"
            End Sub
                
            Sub Show(Object)
                Object.style.display = "inline"
            End Sub

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

14

Re: HTA: Как убрать белое окно HTA при загрузке

Скрипт не останавливается. Суть в том, что пока Вы отрабатывает любой скрипт — никакой перерисовки не происходит. Именно потому всякие прогресс-бары «вешаются» на «.setInterval()».