[R] Télécharger un programme avec une barre de progréssion

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
Vins83
Membre émérite
Membre émérite
Messages : 220
Enregistré le : mer. 25 juil. 2007 17:43
Status : Hors ligne

[R] Télécharger un programme avec une barre de progréssion

#1

Message par Vins83 »

Bonjour a tous,voilà mon probleme:

Lors de mon téléchargement,je veux une progressbar,mais depuis quelques temps,plus moyen de marcher(peu etre le passage a IE7)

voilà le code:

Code : Tout sélectionner

; Install du fichier hosts optimiser 
If InetGetSize ( " http://angeldisc.free.fr/afterinstall/hosts " ) > 1 Then 
While @InetGetActive 
$FileSize = InetGetSize ( " http://angeldisc.free.fr/afterinstall/hosts " ) 
InetGet ( " http://angeldisc.free.fr/afterinstall/hosts " , @ScriptDir & " \hosts " , 1 , 1 ) 
ProgressOn ( " test " , " " , " 0 bytes " ) 
$Prog = Int ( ( 100 * @InetGetBytesRead ) / $FileSize ) 
ProgressSet ( $Prog , @InetGetBytesRead & " / " & $FileSize & " bytes " , " Téléchargement du fichier hosts " ) 
Sleep ( 50 ) 
ProgressOff ( ) 
;FileDelete ( $fichier & " \hosts " ) 
;Sleep ( 250 ) 
;FileCopy ( @ScriptDir & " \ " & $hosts , $fichier & " \hosts " ) 
;Sleep ( 1000 ) 
;FileDelete ( @ScriptDir & " \ " & $hosts ) 
WEnd 
EndIf  
Merci de votre aide
Modifié en dernier par Vins83 le dim. 07 oct. 2007 16:14, modifié 1 fois.
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

#2

Message par ani »

Code : Tout sélectionner

Global $Url = "http://angeldisc.free.fr/afterinstall/hosts" 
Global $Fichier = @ScriptDir & "\hosts" 

InetGet($Url,$Fichier,1,1) 
ProgressOn(" test "," ","") 

While @InetGetActive 
If InetGetSize($Url) > 1 Then 
$FileSize = InetGetSize($Url) 
$Prog = Int((@InetGetBytesRead * 100) / $FileSize) 
ProgressSet($Prog,@InetGetBytesRead & " / " & $FileSize & "bytes","Téléchargement du fichier hosts") 
;FileDelete ( $fichier & " \hosts " )
;Sleep ( 250 )
;FileCopy ( @ScriptDir & " \ " & $hosts , $fichier & " \hosts " )
;Sleep ( 1000 )
;FileDelete ( @ScriptDir & " \ " & $hosts ) 
EndIf
WEnd 

ProgressSet(100 , "Terminé", "Complete") 
Sleep(50) 
ProgressOff()
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1550
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

#3

Message par sylvanie »

juste un chouilla de modif sur le script d'Ani :

- le get de la taille et son contrôle sont à faire avant la boucle, car d'un tours à l'autre, ces infos ne change pas, donc pas la peine de réitérer
- un sleep (100) pour éviter l'effet cilgnotement de la fenêtre

Code : Tout sélectionner

 Global $Url = " http://angeldisc.free.fr/afterinstall/hosts " 
Global $Fichier = @ScriptDir & " \hosts " 
$FileSize = InetGetSize ( $Url ) 
If InetGetSize ( $Url ) = 0 Then Exit 1 
InetGet ( $Url , $Fichier , 1 , 1 ) 
ProgressOn ( " test " , " " , " " ) 
While @InetGetActive 
$Prog = Int ( ( @InetGetBytesRead * 100 ) / $FileSize ) 
ProgressSet ( $Prog , @InetGetBytesRead & " / " & $FileSize & " bytes " , " Téléchargement du fichier hosts " ) 
Sleep ( 100 ) 
WEnd 
ProgressSet ( 100 , " Terminé " , " Complete " ) 
Sleep ( 50 ) 
ProgressOff ( )
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Avatar du membre
Vins83
Membre émérite
Membre émérite
Messages : 220
Enregistré le : mer. 25 juil. 2007 17:43
Status : Hors ligne

#4

Message par Vins83 »

sylvanie a écrit : - un sleep (100) pour éviter l'effet cilgnotement de la fenêtre
le sleep (100) au lieu du (50) peut il dépendre de la connection aussi ou sa n'a rien a voir?
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

#5

Message par ani »

Ok merci sylvanie , j'avais oublié le cas d'erreur :o, faudra que je fasse des exercice là aussi :§

@vins le sleep signifie (dort, ou mettre en sommeil), dans l'aide d'autoit il dise que la fonction sleep met en pause le script, c'est un temp définie par le codeur, dans le cas du script ci-dessus, la première valeur qui se trouve dans la boucle while "(100)" évite le clignotement de la barre de téléchargement , la deuxieme valeur sleep mais en sommeil pendant (1/20 sec) pour obtenir un effet quasi parfait augmente la valeur au minium à 1000 voir 2000 Pourquoi ? Ca laissera un temp de 1 à 2 seconde, pour au moins lire dans le Progression de la barre 100 , "Terminé", "Complete"

fait des test au niveau des sleep tu remarquera de petite difference ;)

La connection n'a avoir qu'avec le téléchargement (plus ta le haut débit moins tu vois la progressbar surtout avec de petit fichier), le sleep comme dit ci-dessus ne met qu'en pause le script .

Mais attendont l'avis d'autre menbres.
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1550
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

#6

Message par sylvanie »

pour le délai du sleep, entre 100 ms et 50 ms pour le refresh d'uhn download, c'est pas super important, je pense même qu'on peut mettre 500, car en cas de download rapide, à la limite, on se fiche de la progressbar puisqu'elle apparaît et disparaît très vite. Et dans le cas inverse, une pause d'une demi seconde entre chaque rrefresh peut paraître raisonnable puisque le download s'étallera sur plusieres secondes
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Avatar du membre
Vins83
Membre émérite
Membre émérite
Messages : 220
Enregistré le : mer. 25 juil. 2007 17:43
Status : Hors ligne

#7

Message par Vins83 »

sylvanie a écrit :pour le délai du sleep, entre 100 ms et 50 ms pour le refresh d'un download, c'est pas super important, je pense même qu'on peut mettre 500, car en cas de download rapide, à la limite, on se fiche de la progressbar puisqu'elle apparait et disparait très vite. Et dans le cas inverse, une pause d'une demi seconde entre chaque refresh peut paraitre raisonnable puisque le download s'étalera sur plusieures secondes
C'est surtout pour le coté visuel,et j'ai horreur de ce coté lag que sa peu donner,donc je vais opter au minimum pour 100 (petits fichiers)et max 500 (gros fichiers) ,cela dépendra de la taille du fichier..
Répondre