使用VBScript的HTA冻结并且不更新进度状态,直到文件传输完成

时间:2013-10-03 14:36:20

标签: html vbscript freeze hta

脚本流程由HTA表单中的按钮运行。然而,每当按下按钮时,而不是看到这个[“下载:”& dlFileName],程序冻结,并保持冻结状态,直到下载完成。我确实看到了第二条消息[“下载完成!”]。

当我在第2行和第3行之间输入MsgBox时,我确实看到文本在按下OK按钮之前变为“正在下载...”,但现在没有解决方案了...

我写错了,还是有一种(简单,轻松)的方式来暂停行动,直到先前的行动被采取?

欢迎任何信息,我对此很新!

Sub Download_File(dlAddress, dlFileName)
        strStatus.innerHTML="Downloading: " & dlFileName  'This does not show up.
    strHttp.Open "GET", dlAddress, False
    strHttp.Send
    With createobject("Adodb.Stream")
        .type = 1 '//binary
        .open
        .write strHttp.responseBody
        .savetofile txtDLPath.Value & dlFileName, 2 '//overwrite
    End With
        strStatus.innerHTML="Downlad complete!"
End Sub

1 个答案:

答案 0 :(得分:7)

这是HTA中的正常行为。我所做的是使用一个叫做“困”的子,它产生一个近乎“瞬间”的延迟,它以一种允许在其他例程中发生html更新的方式暂停脚本。

在更新InnerHTML后立即添加对此函数的调用。

Sub sleepy
    Set objShell = CreateObject("WScript.Shell")
    strCmd = "%COMSPEC% /c"
    objShell.Run strCmd,0,1
End Sub