Affichage super simpliste d'une Barre de progression

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
Izarra6492
Niveau 1
Niveau 1
Messages : 6
Enregistré le : sam. 21 mars 2020 12:26
Status : Hors ligne

Affichage super simpliste d'une Barre de progression

#1

Message par Izarra6492 »

Bonjour,

dans un but cosmétique et convivial, je recherche une solution super simple et efficace qui me premettrait d'insérer une progressbar, ou une bannière défilante, ou un gif animé pendant l'éxécution d'un batch lancé auparavant !
je suis en train de finaliser un script dans lequel il ne me reste plus qu'à intégrer cela si possible !

dit d'une autre manière :
- lancement d'une commande Shellexecute pour exécuter un batch dont le temps de traitement prendra 7 à 30 secondes, en fonction de la machine sur laquelle on se trouve !
- le résultat de ce batch est la création d'un fichier TXT (result.txt)
- ensuite, j'affiche les détails de ce fichier TXT dans une GUI pour traitement ultérieur

pendant l'exécution de ce batch, j'aimerais pouvoir afficher quelque chose qui indique que le travail est en cours...
soit un Gif animé (mais j'ai vu que ce n'était pas bien pris en charge avec les commandes Splash
soit une GUI dans laquelle je pourrais insérer une progress bar (avec un temps max à définir)
idéalement, rajouter quelque chose dans la fonction SplashText (ou MsgBox) du type une barre de progression qui va de 0 à 100% sur un temps de 30s max serait top !
toute opinion la bienvenue !

merci !! :)

Code : Tout sélectionner

#include <ColorConstants.au3>
#include <FontConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#Include <File.au3>
#Include <Array.au3>


HotKeySet( "{ESC}", "_ExitESC")
global $MyCommand="MyBat.bat"

MyProg()
MsgAttente()
Exit

Func MyProg()
   filedelete("result.txt")
filedelete($mycommand)
Filewriteline($mycommand,"Timeout 10")
FileWriteline($Mycommand,"echo Item=MAG1 >Result.txt")
ShellExecute($MyCommand,"","","",@SW_HIDE)    ; app1\install.cmd , etc
EndFunc


Func MsgAttente()
;SplashImageOn("Wait","source.gif")
SplashTextOn("Collecting System Datas","Please Wait...",800,600)
For $i=1 to 5
If not FileExists("Result.txt") then
							   sleep(4000)
   							 Else
									;MsgBox(0,"Leaving",$i,2)
											$i=21
EndIf
Next
splashOff()

EndFunc

Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11523
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: Affichage super simpliste d'une Barre de progression

#2

Message par Tlem »

Bonsoir Izarra6492.
Avant de poser des questions sur le forum, un minimum de recherches serait bienvenu car ce type de demande a déjà été abordé.

Bonnes recherches.
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é".

Avatar du membre
Anthony
Niveau 6
Niveau 6
Messages : 216
Enregistré le : lun. 17 janv. 2011 14:08
Localisation : France
Contact :
Status : Hors ligne

Re: Affichage super simpliste d'une Barre de progression

#3

Message par Anthony »

Izarra6492 a écrit :
mar. 24 mars 2020 15:34
Bonjour,

dans un but cosmétique et convivial, je recherche une solution super simple et efficace qui me premettrait d'insérer une progressbar, ou une bannière défilante, ou un gif animé pendant l'éxécution d'un batch lancé auparavant !
je suis en train de finaliser un script dans lequel il ne me reste plus qu'à intégrer cela si possible !

dit d'une autre manière :
- lancement d'une commande Shellexecute pour exécuter un batch dont le temps de traitement prendra 7 à 30 secondes, en fonction de la machine sur laquelle on se trouve !
- le résultat de ce batch est la création d'un fichier TXT (result.txt)
- ensuite, j'affiche les détails de ce fichier TXT dans une GUI pour traitement ultérieur

pendant l'exécution de ce batch, j'aimerais pouvoir afficher quelque chose qui indique que le travail est en cours...
soit un Gif animé (mais j'ai vu que ce n'était pas bien pris en charge avec les commandes Splash
soit une GUI dans laquelle je pourrais insérer une progress bar (avec un temps max à définir)
idéalement, rajouter quelque chose dans la fonction SplashText (ou MsgBox) du type une barre de progression qui va de 0 à 100% sur un temps de 30s max serait top !
toute opinion la bienvenue !

merci !! :)

Code : Tout sélectionner

#include <ColorConstants.au3>
#include <FontConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#Include <File.au3>
#Include <Array.au3>


HotKeySet( "{ESC}", "_ExitESC")
global $MyCommand="MyBat.bat"

MyProg()
MsgAttente()
Exit

Func MyProg()
   filedelete("result.txt")
filedelete($mycommand)
Filewriteline($mycommand,"Timeout 10")
FileWriteline($Mycommand,"echo Item=MAG1 >Result.txt")
ShellExecute($MyCommand,"","","",@SW_HIDE)    ; app1\install.cmd , etc
EndFunc


Func MsgAttente()
;SplashImageOn("Wait","source.gif")
SplashTextOn("Collecting System Datas","Please Wait...",800,600)
For $i=1 to 5
If not FileExists("Result.txt") then
							   sleep(4000)
   							 Else
									;MsgBox(0,"Leaving",$i,2)
											$i=21
EndIf
Next
splashOff()

EndFunc
Bonjour Izarra6492,

Voici un exemple, je cherche encore pour en intégrer une dans une StatusBar redimensionnable avec un label :roll:
Si je peu t'aider, je vais mettre à jour ma signature pour mon UDF :wink:

En attendant voici ce petit bout de code trouvé ici :P https://www.autoitscript.com/forum/topi ... ent=920667

Code : Tout sélectionner

#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>
;~ #Region ### START Koda GUI section ### Form=


$hGUI			= GUICreate("GUI", 600, 250)				; W=600	H=250

Local $X=150, $Y=25, $W=200, $H=20

$idProgressBar	= GUICtrlCreateProgress($X, $Y, $W, $H)	; X=100 Y=25 W=400 H=20

$hGUI_ForLabel	= GUICreate("", $W, $H-2, $X, $Y+2, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_TRANSPARENT, $WS_EX_MDICHILD), $hGUI)	; W=400 H=17 X=100 Y=24
GUISetBkColor(0x989898, $hGUI_ForLabel)
Local $StatusBarEx_Object	= GUICtrlCreateLabel("0", 0, 0, $W, $H-3, $SS_CENTER + $SS_CENTERIMAGE)	; $SS_CENTER, $SS_CENTERIMAGE ; X=0 Y=0 W=400 H=17
GUICtrlSetFont(-1, 9)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
_WinAPI_SetLayeredWindowAttributes( $hGUI_ForLabel, 0x989898)
GUISetState(@SW_SHOWNA, $hGUI_ForLabel)
GUISetState(@SW_SHOW, $hGUI)
#EndRegion ### END Koda GUI section ###

For $i = 0 To 100
    GUICtrlSetData($idProgressBar, $i)
    GUICtrlSetData($StatusBarEx_Object, $i & ' %')
    Sleep(25)
Next

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit

    EndSwitch
WEnd
J'ai été diagnostiqué pour trouble de la concentration, soyez indulgent
Merci à tous pour votre aide.
http://webfreesoftware.net Les Logiciels Gratuits
Mon [UDF]

[UDF] GuiStatusBar facile (GuiStatusBarEx.au3) viewtopic.php?f=21&t=15370

Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11523
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: Affichage super simpliste d'une Barre de progression

#4

Message par Tlem »

@Anthony
Comme l'a dit Izarra6492, il s'agit d'afficher une barre de progression lors de l'exécution d'un batch qui va mettre plus ou moins de temps en fonction de la machine.
Du coup une barre de progression qui va de 0 à 100% est plutôt mal appropriée pour ce type de demande.

De plus, comme indiqué à Izarra6492 le sujet à largement été abordé sur ce forum et il y a un topic spécifique pour cela : /viewtopic.php?f=6&t=910
Perso, je verrais bien ce type de Barre de progression : /viewtopic.php?p=56685#p54332 :bisou:

Après, dans le sujet indiqué, il y en a des super chouettes. On en trouve même en GDI. :P
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é".

Répondre