@Oscar Vielen Dank für deine Hilfe
Das Skript funktioniert einwandfrei, da hast du mir sehr weitergeholfen
Beiträge von Murty
-
-
Hallo Cape-City,
Danke für deine Antwort.
Ich hatte den Teil weggelassen, da ich kein Abbruch benötige. Laut Dokumentation auf der MSDN Seite für die Funktion CopyProgressRoutine ist der Rückgabe Wert für Progress_Continue = 0.
Ich hatte es auch bereits direkt über das ansprechen der Kernel32.dll probiert, jedoch mit gleichem Ergebnis.
Ich verwende die Autoit Version 3.3.14.2. Auf einem Windows 10 Rechner 1607, meine Datei ist 4,4 GB groß.
-
Hallo Zusammen,
Ich möchte eine große Datei kopieren und dabei eine Fortschrittsbalken angezeigt bekommen.
Ich habe es bereits mit der _WinAPI_CopyFileEx versucht, jedoch zeigt die GUI nur kurz die Progressbar richtig an.
Nach ca 10 Sekunden graut das Fenster aus, und die Progressbar wird nicht mehr weiter gefüllt. Der Kopiervorgang läuft jedoch noch im Hintergrund weiter.
Habt Ihr vielleicht eine Idee wie ich das Problem umgehen kann?
Vielen Dank im Voraus
Spoiler anzeigen
AutoIt
Alles anzeigen#Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_UseX64=y #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** #include <APIFilesConstants.au3> #include <Misc.au3> #include <WinAPIDiag.au3> #include <WinAPIFiles.au3> Opt('TrayAutoPause', 0) Local $hProgressProc = DllCallbackRegister('_ProgressProc', 'bool', 'uint64;uint64;uint64;uint64;dword;dword;handle;handle;ptr') Local $sFile = "C:\Users\Testuser\Testdir1\Test.File" Local $dFile = "C:\Users\Testuser\Testdir2\Test.File" ProgressOn('_WinAPI_CopyFileEx()', 'Copying...', '0%') If Not _WinAPI_CopyFileEx($sFile, $dFile, 0, DllCallbackGetPtr($hProgressProc)) Then _WinAPI_ShowLastError('Error copying ' & $sFile) EndIf DllCallbackFree($hProgressProc) ProgressOff() FileDelete(@TempDir & '\Test*.tmp') 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') Else ProgressSet($iPercent, $iPercent & '%') EndIf EndFunc