ProgressBar在VBScript HTA中未获得刷新
我用VB脚本代码在HTA文件中显示一个进度条。这是工作良好,与多次点击。问题是,在出现任何用户交互(如消息框或任何错误窗口)之前,它不会得到刷新。如果我在调用不同函数的单个sub中调用它,则不会显示进度ProgressBar在VBScript HTA中未获得刷新,vbscript,hta,Vbscript,Hta,我用VB脚本代码在HTA文件中显示一个进度条。这是工作良好,与多次点击。问题是,在出现任何用户交互(如消息框或任何错误窗口)之前,它不会得到刷新。如果我在调用不同函数的单个sub中调用它,则不会显示进度 <Script Language="VBScript"> '------------for Progress bar -------------- Public w,x,y, MyTitle w=100 x=0 y=100 MyTitle = " _ Progress"
<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>
'------------用于进度条--------------
公共w、x、y、MyTitle
w=100
x=0
y=100
MyTitle=“\uu进度”
'-------------w:条宽,x:已完成项,y:剩余项
子测试
进展(10)
callsubA()
进展(10)
callsubB()
进展(20)
callsubC()
进展(10)
端接头
功能进展(步骤)
x=x+步进
d=圆形(x/(y/w)+1,0)
document.Title=FormatPercent(x/y,0)和MyTitle
document.all.progbertext.innerText=x&“/”y
document.all.ProgBarDone.innerText=字符串
如果d=y,则
document.all.ProgBarToDo.innerText=“”
MsgBox“迁移已完成”
x=0
d=圆形(x/(y/w)+1,0)
document.Title=“已完成”
document.all.progbertext.innerText=“”
document.all.ProgBarDone.innerText=“”
如果结束
端函数
我的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>
如果我在每个子脚本之后都使用msgbox,那么它工作得很好。…我使用了一个名为“sleepy”的子脚本,该子脚本会产生一个近乎即时的“延迟”,以允许在其他例程中进行html更新的方式暂停脚本
在更新InnerHTML后(或仅在其末尾),在“Progress”函数中添加对此函数的调用
当我测试代码时,它为我工作。
Sub sleepy
Set objShell = CreateObject("WScript.Shell")
strCmd = "%COMSPEC% /c"
objShell.Run strCmd,0,1
End Sub