Hallo zusammen,
tja, wie fange ich an? Kompliziertes Problem...
Ich bastel an einer GUI die zum Sichern von lokalen Verzeichnissen nacheinander verschiedene Kopierprozesse startet, und zwar per Robocopy.exe. Die Log-Ausgabe des Prozesses mache ich mit StdOutRead() in einem Edit-Control sichtbar.
Spoiler anzeigen
$hPID = Run($backupshare & '\_backupscript\robocopy.exe "' & @mydocumentsdir & '" "' & $backupdestination & '\MyDocuments" /mir /R:0 /W:0',"","",6)
While ProcessExists($hPID)
$readData = StdoutRead($hPID, 1)
If $readData <> $oldData Then
GUICtrlSetData($e_logoutput, @CRLF & $readData)
_GUICtrlEdit_LineScroll($e_logoutput, 0, _GUICtrlEdit_GetLineCount($e_logoutput))
$oldData = $readData
EndIf
Wend
So weit, so gut.
Nun möchte ich aber folgendes realisieren: Es gibt ein MainGUI mit dem Button der die Robocopy-Prozesse nacheinander startet. Das Edit-Feld für den Log-Output habe ich aber in einem anderen GUI-Fenster. Das MainGUI wird deaktiviert und das zweite GUI wird mit @SW_SHOW geöffnet. Der Prozess läuft und im Log läuft die Ausgaben. Das klappt schonmal . In dem zweiten GUI habe ich nun ein Button, welcher den laufenden Prozess abbricht um zum nächsten springt.
Das Problem: Innerhalb der Schleife für den Output reagiert das Script aber nicht auf den klick auf den 'Cancel'-Button...
Das GUI läuft übrigens im 'OnEventMode' weil ich dachte, dass es so gehen würde. Im 'MessageLoopMode' klappt es auch nicht...
Verstanden? Ideen?