[R] Barre de progression.
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[R] Barre de progression.
Bonjour
Je souhaiterai créer une barre de progression pour l'installation de mes logiciels qui se termine à la fin du script avec un avancement déterminé au cours du script.
Merci de votre aide et de vos conseils.
Je souhaiterai créer une barre de progression pour l'installation de mes logiciels qui se termine à la fin du script avec un avancement déterminé au cours du script.
Merci de votre aide et de vos conseils.
Modifié en dernier par eln le mer. 15 août 2007 09:21, modifié 1 fois.
- Tlem
- Site Admin
- Messages : 11773
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Voici un exemple de barre de progression pour le téléchargement d'un fichier.
Adapter le à votre besoin :
Adapter le à votre besoin :
Code : Tout sélectionner
$FileUrl = "http://www.autoitscript.com/autoit3/files/beta/autoit/autoit-v3.2.5.2-beta-setup.exe"
$FileSize = InetGetSize($FileUrl)
;$FileName = StringSplit($FileUrl, "/")
;$FileName = $FileName[$FileName[0]]
$FileName = StringRegExpReplace($FileUrl, "^.*/", "")
InetGet($FileUrl,@scriptdir & "\" & $FileName, 1, 1)
HotKeySet("{ESC}", "_InetGetAbort")
ProgressOn("Download progress for "&$FileName, "", "0%")
While @InetGetActive
$Prog = Int((100 * @InetGetBytesRead) / $FileSize)
ProgressSet($prog, @InetGetBytesRead & "/" & $FileSize & " bytes", "Downloading "&$FileName)
Sleep(250)
WEnd
Func _InetGetAbort()
InetGet("abort")
EndFunc ;==> _InetGetAbort()
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
- Tlem
- Site Admin
- Messages : 11773
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
J'ai trouvé ca aussi :
Code : Tout sélectionner
;use ProgressCopy(Source,Destination, 1 to use multi colour ,"Attributes", 1 for Overwrite files)
#include <GUIConstants.au3>
ProgressCopy("C:\Rep1", "D:\Rep2\",1)
Func ProgressCopy($current, $destination, $UseMultiColour=0, $attrib = "-R", $overwrite = 1 ,$Run1 = 0 )
;FirstTimeRun Get original DirSize and set up Gui
If $Run1 = 0 Then
Global $OverallQty, $Overall, $source, $overallpercent, $Progress0Text, $progressbar1, $Progress1Text, $progressbar2, $Progress2Text, $LocalPercent
DllCall("uxtheme.dll", "none", "SetThemeAppProperties", "int", 0)
If not FileExists ($Destination) then DirCreate ($Destination); This is why it was failing, the dir did not exist
$source = $current
If StringRight($current, 1) = '\' Then $current = StringTrimRight($current, 1)
If StringRight($destination, 1) <> '\' Then $destination = $destination & "\"
$tosearch = $current
$Overall = DirGetSize($tosearch, 1)
$OverallQty = $Overall[1]
Global Const $PrCopyGui = GUICreate("Copie des Fichiers", 420, 100, -1, -1, -1, $WS_EX_TOOLWINDOW + $WS_EX_TOPMOST)
$Progress0Text = GUICtrlCreateLabel("Veuillez patienter", 10, 5, 400, 20, $SS_LEFTNOWORDWRAP)
$progressbar1 = GUICtrlCreateProgress(10, 20, 400, 20)
GUICtrlSetColor(-1, 32250)
$Progress1Text = GUICtrlCreateLabel("", 10, 44, 400, 20, $SS_LEFTNOWORDWRAP)
$progressbar2 = GUICtrlCreateProgress(10, 60, 400, 20, $PBS_SMOOTH)
$Progress2Text = GUICtrlCreateLabel("", 10, 82, 400, 20, $SS_LEFTNOWORDWRAP)
GUISetFont(10, 600)
;$Progress2Text2 = GUICtrlCreateLabel("", 150, 62, 400, 20)
GUICtrlSetColor(-1, 32250); not working with Windows XP Style if not using windows classic style or dllcall above
GUISetState(@SW_SHOW)
GUICtrlSetData($Progress1Text, "Répertoire de travail " & $tosearch)
$Run1 = 1
EndIf
$Size = DirGetSize($current, 3)
$Qty = $Size[1]
Local $search = FileFindFirstFile($current & "\*.*")
While 1
Dim $file = FileFindNextFile($search)
If @error Or StringLen($file) < 1 Then ExitLoop
If Not StringInStr(FileGetAttrib($current & "\" & $file), "D") And ($file <> "." Or $file <> "..") Then
$Qty -= 1
$LocalPercent = 100 - (($Qty / $Size[1]) * 100)
$OverallQty -= 1
$overallpercent = 100 - (($OverallQty / $Overall[1]) * 100)
GUICtrlSetData($Progress0Text, "Progression Totale " & Int($overallpercent) & "% Completer")
GUICtrlSetData($progressbar1, $overallpercent)
GUICtrlSetData($progressbar2, $LocalPercent)
GUICtrlSetData($Progress2Text, "Copie du Fichier " & $file)
If $useMultiColour then
GUICtrlSetColor($Progressbar2, _ChangeColour($LocalPercent))
GUICtrlSetColor($Progressbar1, _ChangeColour($OverallPercent))
EndIf
FileCopy($current & "\" & $file, $destination & StringTrimLeft($current, StringLen($source)) & "\" & $file,$overwrite)
FileSetAttrib($destination & StringTrimLeft($current, StringLen($source)) & "\" & $file, $attrib)
EndIf
If StringInStr(FileGetAttrib($current & "\" & $file), "D") And ($file <> "." Or $file <> "..") Then
DirCreate($destination & StringTrimLeft($current, StringLen($source)) & "\" & $file)
FileSetAttrib($destination & StringTrimLeft($current, StringLen($source)) & "\" & $file, $attrib)
GUICtrlSetData($Progress1Text, $current & "\" & $file)
ProgressCopy($current & "\" & $file, $destination, $UseMultiColour, $attrib, $overwrite,1)
EndIf
WEnd
FileClose($search)
;when overall percent = 100 set end gui text, delete gui and reset run1 to 0
If $overallpercent = 100 Then
GUICtrlSetData($Progress0Text, "Progression Totale complètée à 100%")
GUICtrlSetData($progressbar1, 100)
GUICtrlSetData($progressbar2, 100)
GUICtrlSetData($Progress2Text, "Terminer !")
Sleep(2000)
GUIDelete($PRCopyGui)
$Run1 = 0
EndIf
EndFunc ;==>ProgressCopy
Func _ChangeColour($start)
$Redness = Int(255 - ($start / 100 * 512))
If $Redness < 0 Then $Redness = 0
$Greeness = Int(($start / 100 * 512) - 257)
If $Greeness < 0 Then $Greeness = 0
$Blueness = Int(255 - ($Redness + $Greeness))
Return ($Redness * 256 * 256) + ($Greeness * 256) + $Blueness
EndFunc
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Bonjour
Merci pour ces indices. Le premier j'ai à peu près compris mais le deuxième est trop compliqué pour moi. J'ai changé un peu d'optique et souhaiterai une barre de défilement qui s'arrêterai à la fin de l'installation.
Je suis parti sur la dessus :
J'ai ma barre de défilement mais comme je ne sors pas de ma boucle !!
Merci pour ces indices. Le premier j'ai à peu près compris mais le deuxième est trop compliqué pour moi. J'ai changé un peu d'optique et souhaiterai une barre de défilement qui s'arrêterai à la fin de l'installation.
Je suis parti sur la dessus :
Code : Tout sélectionner
$s = 0
$w = 0
While 1
ProgressOn("Veuillez patienter", "Installation en cours", "")
For $i = $s to 100 step 1
sleep(20)
ProgressSet($i)
Next
If $i = 100 then
$s = 0
EndIf
If $w = 1 Then
ProgressOff()
EndIf
WEnd
run ("notepad.exe")
Sleep (50000)
$w = 1
- Tlem
- Site Admin
- Messages : 11773
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
A quoi ressemble votre script d'installation !
Pouvez vous nous en mettre un bout ...
Pouvez vous nous en mettre un bout ...
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Il n'y a pas de script en particulier. Je souhaiterai juste une barre de défilement pendant l'installation du logiciel. C'est du gadget et c'est pour occuper les yeux. Elle commence au début et s'arrête à la fin.
Sinon compiler un script "Barre de défilement" en executable. Le lancer au début et le tuer à la fin. Mais il y a peut-être une autre solution ?
Sinon compiler un script "Barre de défilement" en executable. Le lancer au début et le tuer à la fin. Mais il y a peut-être une autre solution ?
- Tlem
- Site Admin
- Messages : 11773
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Normalement, c'est l'installateur du logiciel, qui doit gérer cela, et non vous !eln a écrit :Je souhaiterai juste une barre de défilement pendant l'installation du logiciel. C'est du gadget et c'est pour occuper les yeux. Elle commence au début et s'arrête à la fin.
D'ailleurs, sur quoi voulez-vous vous baser pour le temps d'installation, une simple temporisation n'est pas suffisante, car d'une machine à l'autre ca ne mettra pas la même durée !!!
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Oui je sais mais comme je disais avant, c'est du gadget. C'est juste pour occuper les yeux et m'entrainer. J'ai fait un script entre autre pour l'installation d'office 2003 par le CD. C'est assez long et il n'y a pas de barre d'avancement tout le temps.Normalement, c'est l'installateur du logiciel, qui doit gérer cela, et non vous !
Maintenant je n'ai pas besoin de temporisation, je voudrai juste qu'une fois l'installation terminée ma barre de progression disparaisse avec pourquoi pas un message comme quoi l'installation est terminée et donc que tout c'est bien passé. Ce serait une barre de progression en continu qui tourne en boucle.
- Tlem
- Site Admin
- Messages : 11773
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Voici un autre exemple tirer du forum Anglais, adapter à votre besoin (Remplacer MsPaint.exe par votre installation de prog) :
Code : Tout sélectionner
#include <GUIConstants.au3>
HotKeySet("{ESC}", "endscript")
; On récupère le PID du programme.
$PID = Run("MsPaint.exe","")
$Ca = GUICreate ( "" , 250 , 46 , -1 , -1 , $WS_POPUP,$WS_EX_TOPMOST+$WS_EX_WINDOWEDGE+$WS_EX_DLGMODALFRAME)
GUISetBkColor ( 0x000000 , $Ca )
$Da = GUICtrlCreateLabel (" Installation en cours ...", 23, -1, 250,23)
GuiCtrlCreateGraphic(-1, 1, 252,45,$SS_SUNKEN)
GUICtrlSetColor(-1, 0XFFFFFF)
GUICtrlSetColor ( $Da, 0XFFFFFF)
GUICtrlSetFont ($Da, "12" , "50" , "" , "Courrier New")
GUICtrlCreateGraphic(1, 23, 250,20)
GUICtrlSetColor(-1, 0x007F00)
GuiSetState(@SW_SHOW)
_SliderRight()
Func _getmsg()
$Msg = GUIGetMsg()
If $Msg = $GUI_EVENT_CLOSE Then Exit
; Test du process. Si inexistant, on sort.
If ProcessExists($PID)=0 Then endscript()
EndFunc
Func _SliderRight()
Local $newcolor,$color = 0x050000
For $m = 0 To 245 Step 5
$newcolor += $color
$ba = GUICtrlCreateLabel( "", $m, 25, 4,16)
GUICtrlSetBkColor($ba, $newcolor)
Sleep(50)
Next
_getmsg()
_SliderLeft()
EndFunc
Func _SliderLeft()
Local $backcolor,$color = 0x050000
For $m = 245 To 0 Step -5
$backcolor += $color
$ba = GUICtrlCreateLabel( "", $m, 25, 4,16)
GUICtrlSetBkColor($ba, $backcolor)
Sleep(50)
Next
_getmsg()
_SliderRight()
EndFunc
Func endscript()
Exit
EndFunc
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
- Tlem
- Site Admin
- Messages : 11773
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Dans ce cas rajouter le tag [R] dans le titre de votre 1er message .eln a écrit :Merci pour cette recherche et solution. Sujet résolu.
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Re: [R] Barre de progression.
Bonsoir Tlem
Les scripts que vous proposez exemple:
ne marche pas ?
Les scripts que vous proposez exemple:
► Afficher le texte
- Tlem
- Site Admin
- Messages : 11773
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [R] Barre de progression.
Bonsoir,
Pour commencer, je répondrais à votre dernière phrase en vous dirigeant simplement vers la deuxième ligne de ma signature !!!
Ensuite, regardez la date à laquelle ces scripts ont été proposés.
Vous imaginez bien que cinq ans en arrière, la version d'AutoIt n'était pas celle d'aujourd'hui. Donc pour un script de cette époque qui ne fonctionne pas aujourd'hui, vous devez bien évidement l'adapter en conséquence.
Pour finir, je rajouterais que vous oubliez un peu trop souvant d'utiliser les balises de code (ce qui est déplaisant, car je doit les rajouter à chaque fois).
Pour commencer, je répondrais à votre dernière phrase en vous dirigeant simplement vers la deuxième ligne de ma signature !!!
Ensuite, regardez la date à laquelle ces scripts ont été proposés.
![Shocked :shock:](./images/smilies/icon_eek.gif)
Vous imaginez bien que cinq ans en arrière, la version d'AutoIt n'était pas celle d'aujourd'hui. Donc pour un script de cette époque qui ne fonctionne pas aujourd'hui, vous devez bien évidement l'adapter en conséquence.
Pour finir, je rajouterais que vous oubliez un peu trop souvant d'utiliser les balises de code (ce qui est déplaisant, car je doit les rajouter à chaque fois).
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Re: [R] Barre de progression.
Bonjour
Alors c’est la raison pour la quelle la plus part des scripts ne marchent pas !! Merci pour cette information! Que dieu te garde…
______________________________________________________________________________
Quelle est la différence entre un(e) copain(ine), une ami(e) et une très bonne ami(e) ... ???
Alors c’est la raison pour la quelle la plus part des scripts ne marchent pas !! Merci pour cette information! Que dieu te garde…
______________________________________________________________________________
Quelle est la différence entre un(e) copain(ine), une ami(e) et une très bonne ami(e) ... ???