Das Hochzählen und Überwachen der Variable $UnZipTime mittels AdlibRegister kannst du dir ersparen. Das geht eleganter mit einer Static-Variablen:
Spoiler anzeigen
;~ global $UnZipTime=0
[/autoit] [autoit][/autoit] [autoit]Func Unzip($path,$tempPath=@TempDir)
Local Static $UnZipTime = 0
$UnZipTime += 1
If $UnZipTime = 30 Then
$UnZipTime = 0
ProcessClose("7zG.exe")
Return SetError(1,0,-1)
EndIf
;~ AdlibRegister(observateZip(),1000)
_7ZipProgress("7zG.exe", $path, $tempPath, false)
If @error Then Return SetError(2,@error,0) ; Fehler von _7ZipProgress() als @extended-value
;~ AdlibUnRegister(observateZip())
Return 1
EndFunc
Func zip($path,$OutPath)
$ar=StringSplit($OutPath,".")
_7ZipProgress($s7ZipEXE, $path, $OutPath, True, $ar[UBound($ar)-1])
return 1
EndFunc
;~ Func observateZip()
;~ $UnZipTime+=1
;~ if $UnZipTime=30 then
;~ ProcessClose("7zG.exe")
;~ endif
;~ EndFunc
; .....
[/autoit]
In der Funktion _7ZipProgress() machst du eine Fehlerbehandlung aber ohne Return
- ich nehme an, einfach vergessen.
Spoiler anzeigen
While ProcessExists($iPID)
$aProcessStats = ProcessGetStats($iPID, 1)
If $aProcessStats = 0 Then
;~ SetError(3, Default, 0) <<<<== so passiert nix ![]()
Return SetError(3, Default, 0) ;<<<<== sicher so gemeint
EndIf
Sleep($iUpdateRate)
WEnd