|
|
本帖最后由 527104427 于 2013-6-6 12:46 编辑
mdyblog 发表于 2013-6-6 12:16 
CALL @WIN1
_SUB WIN1,W303H100,新窗口1,
这实际上并没有捕获7Z.EXE的进程,进度条结束了有7-8秒,才提示解压成功
CALL @WIN1
_SUB WIN1,W303H100,新窗口1,
SET &p=0
SET &dat= //解压的数据
PBAR PBAR1,L12T13W70H16,0
//LABE -center -vcenter -trans -ncmd PBAR1_TEXT,L12T13W70H16,完成%&p%%%,,0x0000FF
ITEM ITEM1,L24T34W60H30,解压,THREAD* CALL OnJieYa,
_END
_SUB SetJinDu
envi @PBAR1=%1 //进度
//envi @PBAR1_TEXT=%2 //文本
//NVI @this.InvalidateRect=12;13;82;33;0 //重绘
_END
_SUB OnJieYa
MDIR "%CurDir%\1"
EXEC* --cmd::1000:OnCheck &dat=!%CurDir%\7z.exe x "auto.7z" -y -aos -o"%CurDir%\1\"
//EXEC* --cmd::1000:OnCheck &dat=PECMD wait 10000 //模拟 ,运行 10秒
SetJinDu 100 //完成
TEAM MESS 解压完成|kill @
_END
_SUB OnCheck //分析 解压数据 &dat ,推进进度
//太复杂, 写个模拟的吧,自动加10
CALC #&p=%&p% + 10
IFEX $%&p%>100, SET p=100
SetJinDu %&p%
_END
//分析 7z.exe 的输出, 先要 输出 列表, 再根据 实际进度,判断 进度%,
//由于7z.exe 本身的原因(带有输出C缓冲), 输出 是一段一段的拉出来的, 二不是 实时流出来的。 小的文件,直到最后才一下子显示最终结果:100%,没有中间结果。
|
|