用stdoutread读取7z.exe压缩文件的进度,显示为空白?求大神支招
单独在cmd.exe里面运行能看到整个的进度,用run后就不显示,参数改为@sw_show后发现运行的窗口只有一个光标在闪烁,更改了工作目录也是一样的情况。 TraySetToolTip("正在创建压缩档案:" & $cArchives)Local $sOutput, $findPercent, $iProgPercent
Local $iPID = Run($sCmdp, @ScriptDir, @SW_SHOW, $STDOUT_CHILD)
ProgressOn($cTitle, "", "", -1, 1, $DLG_MOVEABLE)
While 1
$sOutput = StdoutRead($iPID)
If @error Then ExitLoop
If $sOutput <> "" Then
$findPercent = StringInStr($sOutput, '%')
If $findPercent And StringInStr($sOutput, '+') Then
$iProgPercent = Number(StringLeft($sOutput, $findPercent - 1))
ProgressSet($iProgPercent, "", "Compressing...")
EndIf
EndIf
WEnd
ProgressOff() 参数问题吧~ 代码不完整,没见你的调用7z命令行代码。 7z.exe a %USERPROFILE%\Desktop\test.7z D:\test.exe -mx9 -ms=200m -mf -mhc -mhcf -m0=LZMA2 -mmt afan 发表于 2023-5-21 16:30
参数问题吧~ 代码不完整,没见你的调用7z命令行代码。
以上这个命令行直接运行是显示整个过程的,如果通过run调用就只显示一个光标了,不知道是什么情况? ChengXin 发表于 2023-5-21 16:47
以上这个命令行直接运行是显示整个过程的,如果通过run调用就只显示一个光标了,不知道是什么情况?
缺少bs流输出参数,添加 -bsp1 试试 afan 发表于 2023-5-21 17:01
缺少bs流输出参数,添加 -bsp1 试试
好的,感谢大神!我试试先 afan 发表于 2023-5-21 17:01
缺少bs流输出参数,添加 -bsp1 试试
完美解决,谢谢! 7z有现成的udf为啥还要另外用7z.exe呢?建议看看udf
页:
[1]