sylvanie a écrit :pour la taille totale, oui, l'appel semble bon
pour le -9223372036854775807 à la fin du Run, ??? essayez de fair un consolewrite de debug des variables une à une ...
Les variables du run sont ok.
Si je met en commentaire ceci AdlibRegister("Update_progress",1000)
-9223372036854775807 disparait de la ligne Run.
Sinon faites également un consolewrite de @error juste après les filegetsize pour voir si la fonction échoue.
Une suggestion pour $total : calculez le une seule fois lors de l'appuie du bouton, avant le Run et non dans le adliberegister car du coups on évite de poller toute les secondes une info constante.
Je ne comprend pas
ConsoleWriteError(????) peut être ? -> ConsoleWriteError(Update_progress())
Code : Tout sélectionner
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>
Global $SunVirtualBox = RegRead("HKEY_LOCAL_MACHINE\Software\Sun\VirtualBox", "InstallDir")
Global $IniSource = "F:\xp.vdi"
Global $IniDestination = "G:\Clone.vdi"
#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Form1", 633, 447, 192, 124)
Global $Button1 = GUICtrlCreateButton("Fake copie", 160, 296, 329, 73, $WS_GROUP)
Global $Progress1 = GUICtrlCreateProgress(152, 168, 345, 41)
Global $Label1 = GUICtrlCreateLabel("Avancement", 160, 128, 64, 17)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
;Global $tempfile=@TempDir&"\totrash.txt"
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
;FileDelete($tempfile)
Exit
Case $Button1
$pid= Run($SunVirtualBox & '\VBoxManage.exe clonehd "' & $IniSource & '" "' & $IniDestination & '"', $SunVirtualBox, @SW_HIDE)
[color=#FF0000] $total = FileGetSize($IniSource) ; ici il faudra mettre la taille du fichier source qui se fera clôner
ConsoleWriteError(Update_progress())[/color]
AdlibRegister("Update_progress",1000)
EndSwitch
WEnd
Func Update_progress()
$pourcent=int (FileGetSize($IniDestination)/$total * 100)
ConsoleWrite($pourcent&@CRLF)
GUICtrlSetData($Progress1,$pourcent)
If Not ProcessExists($pid) Then
GUICtrlSetData($Progress1,100)
AdlibUnRegister("Update_progress")
EndIf
EndFunc
Dans le console j'ai ceci qui apparait :
-9223372036854775807
0-9223372036854775807
-9223372036854775807