【问题标题】:ProgressBar not getting refresh in VBScript HTAProgressBar 在 VBScript HTA 中没有得到刷新
【发布时间】:2013-09-10 12:29:52
【问题描述】:

我在带有 VB 脚本代码的 HTA 文件中显示了一个进度条。这工作正常,多次点击。问题是,直到发生任何用户交互(如消息框或任何错误窗口)之前,它都不会刷新。如果我在调用不同函数的单个 sub 中调用它,它不会显示进度。

<Script Language="VBScript">
'------------for Progress bar --------------
 Public w,x,y, MyTitle 
 w=100
 x=0
 y=100
 MyTitle = " _ Progress"
 '----------- w: bar width, x: done items, y: remaining items
Sub test
    Progress(10)
     callsubA()
    Progress(10)
     callsubB()
    Progress(20)
    callsubC()
    Progress(10)
End Sub

 Function Progress(step)
  x=x+step
  d = Round( x / (y/w) +1  ,0)
  document.Title = FormatPercent(x/y, 0) & MyTitle
  document.all.ProgBarText.innerText = x & "/" & y
  document.all.ProgBarDone.innerText = String(d, "_")
   If d<w Then
    document.all.ProgBarToDo.innerText = String(w-d, "_") & "|"
   Else
    document.all.ProgBarToDo.innerText = "|"
   End If
    If x>=y Then
    document.all.ProgBarToDo.innerText = ""
    MsgBox "Migration Completed"    
    x=0
    d = Round( x / (y/w) +1  ,0)
    document.Title = "Completed"
    document.all.ProgBarText.innerText = ""
    document.all.ProgBarDone.innerText = ""
   End If
 End Function 
</script>

我的 HTML 看起来像:

    <span id="ProgBarText"></span><br>
 <span id="ProgBarDone" style="background-color: #3399FF"></span>
 <font color="#FFFFFF">
 <span id="ProgBarToDo"style="background-color: #C0C0C0"></span> 
 </font> 

如果我在每个 sub 之后都给出 msgbox,那么它可以正常工作....

【问题讨论】:

  • 代码在我测试时为我工作。

标签: vbscript hta


【解决方案1】:

我使用了一个名为“sleepy”的子程序,它会产生一个近乎即时的“延迟”,它会暂停脚本以允许在其他例程中发生 html 更新。

在更新 InnerHTML 后(或仅在其末尾),在“Progress”函数中添加对该函数的调用。

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

【讨论】:

    猜你喜欢
    • 2011-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多