[R] Progressbar

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
91300
Niveau 2
Niveau 2
Messages : 16
Enregistré le : lun. 10 déc. 2012 15:18
Status : Hors ligne

[R] Progressbar

#1

Message par 91300 »

Bonjour à vous, je viens vous voir pour un petit coup de main:

sur un logiciel, je voudrais crée une progressbar qui progresse en fonction du nom de Ko télécharger par logiciel je m'explique:

Actuellement, le code ressemble à ceci:

Code : Tout sélectionner

 $url = "http://oldtimer.geekstogo.com/OTL.exe"
$fichier = @DesktopDir & "\Outils de Desinfection\OTL.exe"
    $BarreProgression = GUICreate("OTL : téléchargement en cours", 200, 80, -1, -1, $WS_POPUPWINDOW);$WS_CAPTION+$WS_CLIPSIBLINGS)
$Progress = GUICtrlCreateProgress(10, 30, 180, 20, $PBS_MARQUEE)
GUICtrlCreateLabel("Téléchargement en cours...", 10, 4, 520, 100)
GUICtrlSetFont(-1, 10, 800, 0, "comic sans MS")
GUICtrlSetColor(-1, 0x0000FF) ;couleur du texte
GUICtrlSendMsg($Progress, 0x0400 + 10, 1, Number(30)) ; on envoie la ProgressBar
GUISetState(@SW_SHOW)
$myDL = InetGet($url, $fichier, 1, 1)


La progressbar tourne mais, elle ne tourne pas par pourcentage.
Or, en sachant que ce logiciel pèse 588Ko, je voudrais que ma progressbar avance en fonction de cela genre a 1% c'est quand le logiciel est a 5ko, 10% quand il est a 50 etc (ce sont des chiffres au hasard pour illustré bien sur)

j'avais pensé à quelque chose du genre :

Code : Tout sélectionner

$NbKeys = 588ko
        Local $Pourcent1 = $poids / 100 ; Calcul du 1%
        For $i = 0 To $poids
    $BarreProgression = GUICreate("OTL : téléchargement en cours", 200, 80, -1, -1, $WS_POPUPWINDOW);$WS_CAPTION+$WS_CLIPSIBLINGS)
    GUICtrlSetData($pbLoading, (($i + $Pourcent1) / $poids ) * 100) ; Affichage suivant le nombre $i (pourcentage du total $poids )
            Sleep(25) ; Attente indispensable pour affichage correct de la barre de progression.
$Progress = GUICtrlCreateProgress(10, 30, 180, 20, $PBS_MARQUEE)
Avec une fonction pour démarrer et stopper la barre:

Code : Tout sélectionner

Func _DemBarre()
    GUICtrlSetStyle($pbLoading, 0x040A)
    _SendMessage(GUICtrlGetHandle($pbLoading), 0x040A, True, $Vitesse)
EndFunc   ;==>_DemBarre

Func _FinBarre()
    GUICtrlSetData($pbLoading, 0)
    _GUICtrlStatusBar_SetText($StatusBar1, "", 0)
EndFunc   ;==>_FinBarre
Mais, je ne trouve pas comment mettre ceci en place, certains ont-ils des idées ?

Merci d'avance :)
Modifié en dernier par 91300 le lun. 10 mars 2014 15:07, modifié 1 fois.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Progressbar

#2

Message par mikell »

Pour ce que tu veux faire je te conseille très vivement la fonction _InetGetX de matwachich, et aussi de faire une recherche sur le forum pour voir les différentes variantes de scripts avec progressbar qui utilisent cette fonction
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
91300
Niveau 2
Niveau 2
Messages : 16
Enregistré le : lun. 10 déc. 2012 15:18
Status : Hors ligne

Re: [..] Progressbar

#3

Message par 91300 »

Bonsoir,

Merci de la réponse :)

si je peux abuser encore de ton temps (ou celui d'un autre) 5 minutes, j'ai une petite question que je n'arrive pas à résoudre malgré de nombreuse recherches :

Partons du principe que j'ai coché le téléchargement de OTM (checkbox2) et de OTL (checkbox 37)
je voudrais que a la fin de tous mes télécharger, mon msgbox me dise "les logiciels OTM et otl ont été télécharger avec succès"

en gros, faut que je puisse lire les cases coché dans un msgbox à la fin de tous les télécharger, avez vous une idée de comment faire...?
je ne trouve pas :roll: :(

Merci encore du temps que vous accordez à chaque personne et à l'aide apporté ;)

+++
aulus
Niveau 7
Niveau 7
Messages : 424
Enregistré le : lun. 25 mars 2013 19:38
Status : Hors ligne

Re: [..] Progressbar

#4

Message par aulus »

Peut-être :

Code : Tout sélectionner

If _IsChecked($OTMcheck) and  _IsChecked($otlcheck)Then msgbox(0,"","Les logiciels OTM et otl ont été téléchargés avec succès")
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Progressbar

#5

Message par mikell »

Ou ce genre de truc avec une boucle

Code : Tout sélectionner

If _IsChecked($cb) Then $message &= GUICtrlRead($cb, 1) & @crlf
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
91300
Niveau 2
Niveau 2
Messages : 16
Enregistré le : lun. 10 déc. 2012 15:18
Status : Hors ligne

Re: [..] Progressbar

#6

Message par 91300 »

Bonjour,

Merci de vos réponses, hélas, je ne crois pas que cela fonctionne comme je le souhaite:
en effet en reprenant le code de aulus, il faut que je fasse cette ligne pour chacune des 37 checkbox...
en fait ce qu'il me faut c'est genre une variable qui lise les checkbox coché mais, je ne sais même pas si c'est faisable !!! :(

Merci à vous en tout cas :)
aulus
Niveau 7
Niveau 7
Messages : 424
Enregistré le : lun. 25 mars 2013 19:38
Status : Hors ligne

Re: [..] Progressbar

#7

Message par aulus »

Peut-être avec un tableau de variables et une boucle comme le suggère Mikell :

Code : Tout sélectionner

Dim $check[37]
...
Local $check[0] =   GUICtrlCreateCheckbox("...")
Local $check[1] =   GUICtrlCreateCheckbox("...")
Local $check[2] =   GUICtrlCreateCheckbox("...")
...
Local $check[36] =   GUICtrlCreateCheckbox("...")

...

Local $message = "Logiciels téléchargés : " & @CRLF & @CRLF
For $i = 0 TO 36
If _IsChecked($check[$i]) Then $message = $message & GUICtrlRead($check[$i], 1) & @CRLF
Next
...
MsgBox(0,"",$message)
 
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Progressbar

#8

Message par mikell »

Bien que ce ne soit pas vraiment recommandé, si les checkbox ont été créées bien à la suite sans création de controle intercalée on peut aussi tenter une boucle sur les ids

Code : Tout sélectionner

For $i = $checkbox1 To $checkbox37
   If _IsChecked($i) Then $message &= GUICtrlRead($i, 1) & @CRLF
Next
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
91300
Niveau 2
Niveau 2
Messages : 16
Enregistré le : lun. 10 déc. 2012 15:18
Status : Hors ligne

Re: [..] Progressbar

#9

Message par 91300 »

Merci, je vais essayer de mettre vos morceau de code en place, merci beaucoup à vous encore :)
Répondre