Hallo AutoIT-Spezialisten,
ich habe ein Script erstellt mit welchem ich eine Zip-Datei erzeuge und diese dann verschiebe. Für den Verschiebevorgang habe ich eine Progressbar(wie im Forum beschrieben) implementiert.
Dieses Progressbarfenster lässt sich NICHT verschieben und genau das ist meine Frage. Kann mir jemand erklären warum nicht und ob ich das ändern kann?
Des Weiteren hätte ich gerne eine Progressbar für den Vorgang des Erstellens der Zip-Datei, da diese eine sehr große Datei(ca. 25 GB/Datensicherung) sein wird und der Vorgang ziemlich lange dauert.
Hätte jemand eine Idee wie ich das bewerkstelligen könnte?
Auszug:
C
#include <MsgBoxConstants.au3>
#include <AutoItConstants.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Date.au3>
#include <String.au3>
#include <StringConstants.au3>
#include <EditConstants.au3>
#Include <Misc.au3>
#include <Array.au3>
#Include <WinAPIEx.au3>
#include <WinAPIDiag.au3>
#include <WinAPIFiles.au3>
Local $sLongDayName = _DateDayOfWeek(@WDAY, $DMW_LOCALE_LONGNAME) ; Name Wochentag feststellen
Local $sOutput = ""
Global $sSource = "C:\Users\User\Test.zip"
Global $sDesti = "U:\Test.zip"
If $sLongDayName = "Freitag" Then
$sEidi = MsgBox(4, "Meldung", "Heute ist " & $sLongDayName & "!!!" & @CRLF & @CRLF & "Möchten sie die Datensicherung durchführen?")
If $sEidi = "6" Then
MsgBox(0, "Warnung!!!", "Bitte alle Programme und oder geöffneten Dateien schließen!!!")
$sStatus = Run(@ComSpec & " /c " & "7z a -tzip Test.zip C:\E\01_DOKUMENTE -pPASSWORT", "C:\Users\User", @SW_HIDE, $STDOUT_CHILD) ; ZIP-File wird mit /Zip erzeugt
ProcessWaitClose($sStatus)
$sOutput &= StdoutRead($sStatus)
Msgbox(0, "Meldung Verschieben", $sOutput & @CRLF & @CRLF & " Soll der Content Kopiert werden?", 7)
Local $hProgressProc = DllCallbackRegister('_ProgressProc', 'bool', 'uint64;uint64;uint64;uint64;dword;dword;handle;handle;ptr')
ProgressOn('Verschieben', 'Moving...', '0%', -1, -1, BitOR($DLG_NOTONTOP, $DLG_MOVEABLE))
If Not _WinAPI_MoveFileEx($sSource, $sDesti, 3, DllCallbackGetPtr($hProgressProc)) Then
_WinAPI_ShowLastError('Error copying ' & $sSource)
EndIf
DllCallbackFree($hProgressProc)
ProgressOff()
EndIF
Else
MsgBox(0, "Meldung", "Heute ist nicht Freitag. Also keine Datensicherung!!!", 4)
EndIf
Func _ProgressProc($iTotalFileSize, $iTotalBytesTransferred, $iStreamSize, $iStreamBytesTransferred, $iStreamNumber, $iCallbackReason, $hSourceFile, $hDestinationFile, $pData)
#forceref $iStreamSize, $iStreamBytesTransferred, $iStreamNumber, $iCallbackReason, $hSourceFile, $hDestinationFile, $pData
Local $iPercent = Round($iTotalBytesTransferred / $iTotalFileSize * 100)
If $iPercent = 100 Then
ProgressSet($iPercent, '', 'Complete')
Sleep(1500)
Else
ProgressSet($iPercent, $iPercent & '%')
EndIf
Sleep(10) ; to slow down to see the progress bar
If _IsPressed('1B') Then ;Abbruch wenn EXC-Taste gedrückt wird
Return $PROGRESS_CANCEL
Else
Return $PROGRESS_CONTINUE
EndIf
EndFunc ;==>_ProgressProc
Alles anzeigen