Hallo zusammen!
Ich habe AutoIt schon vor einem Jahr entdeckt und mir hier im Forum immer wieder Anregungen geholt. Jetzt hab ich aber ein Problem, zu dem ich nichts finden konnte. Somit musste ich mich doch auch mal registrieren (benutze AutoIt nur "beruflich", zu Hause hab ich Linux).
Ich habe ein Verwaltungsprogramm für virtuelle Maschinen geschrieben und bin dabei, dieses abzuändern. Ich möchte die Dateien in einem passwortgeschützten, gepackten Archiv speichern, um den Zugriff auf befugte Personen, die das Passwort kennen, zu beschränken. Dazu verwende ich die Konsolenversion von 7z, 7za. Packen und Entpacken ist alles kein Problem. Aber da es sich um Dateien von bis zu 2,5 GB handelt, dauert das (Ent-)Packen schon eine Weile und ich muss den Nutzern den Fortschritt anzeigen. Bei größeren Dateien zeigt 7za den Fortschritt in Prozent in der Konsole ja auch an. Jetzt dachte ich, ich lese einfach mit StdoutRead() die Ausgabe, extrahiere daraus die Prozentangabe und geb sie weiter an ProgressSet. Leider funtioniert das aber nicht, da ich von StdoutRead erst etwas zurück bekomme, wenn 7za fertig ist.
Spoiler anzeigen
$PID = Run(@ComSpec & " /c 7za x ./../VM-Systeme.7z -o" & $Dir & " " & $File & " -r -aoa", "", @SW_HIDE, 2)
_DebugOut(@error)
_DebugOut("PID = " & $PID)
$count = 0
Do
$count += 1
Until StdOutRead($PID, 0, True) <> 0
$Stdout = StdoutRead($PID)
$err = @error
_DebugOut("Stdout = " & $Stdout)
_DebugOut("Error = " & $err)
Hat jemand eine Idee, wie ich an die Fortschrittsangaben komme? Zur Not kann ich natürlich auch die Konsole anzeigen lassen, oder die Oberfläche von 7z. Aber es wäre schöner, wenn das Ganze eine einheitliche AutoIt-GUI wäre.
saja