Flash info

"Les IT Pros sont en train de migrer rapidement car PowerShell est plus facile et plus puissant que VBScript."

Microsoft Scripting Guys

 
Accueil arrow Articles / Tutoriaux arrow Afficher une barre de progression graphique
Afficher une barre de progression graphique
Écrit par Arnaud Petitjean [MVP]   
24-06-2008

Si l’utilisation d’une barre de progression en mode texte (voir tuto « Visualiser la progression avec Write-Progress ») ne vous satisfait pas pleinement car pas très esthétique, alors vous serez heureux de découvrir ce petit tutoriel.

Nous allons faire appel à une Winform dans laquelle nous mettrons un objet de type Windows.Forms.ProgressBar. Il va nous falloir également faire appel à un timer ; car celui-ci est l’élément clé qui va nous permettre d’actualiser le statut de la barre de progression. Sans lui point de salut !

Le timer va permettre à la Winform de « redonner la main » au script à intervalle régulier (toutes les secondes dans notre exemple) afin que ce dernier puisse mettre à jour la progressBar. Ainsi nous la verrons progresser jusqu’à atteindre 100%.

Veuillez noter quelques propriétés intéressantes sur l’objet ProgressBar:

 Propriété

 Description

Style  Style de barre souhaité. Trois types sont possibles : Blocks (valeur par défaut), Continuous, Marquee (je n’ai pas vu de différence par rapport à Blocks)
Minimum valeur de départ (par défaut 0)
Maximum valeur maximum (par défaut 100)
 Step valeur de l'incrément (par défaut 10)

 

 
progressbar.jpg

 

Pour incrémenter la valeur de la progressbar, vous pouvez soit comme dans l’exemple faire appel à la méthode « performStep » ou faire varier la propriété « value » sans toutefois dépasser la valeur Maximum que vous aurez définie au préalable.

Voici le script qui vous amènera au résultat ci-dessus :

[void][Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms')
#
# Timer
$timer = new-object System.Windows.forms.timer
$timer.Interval = 1000 # 1 seconde
#
# progressBar1
#
$progressBar1 = new-object System.Windows.Forms.ProgressBar
$progressBar1.Location = new-object System.Drawing.Point(58, 107)
$progressBar1.Name = 'progressBar1'
$progressBar1.Size = new-object System.Drawing.Size(164, 23)
$progressBar1.Value = 0
$progressbar1.style = 'continuous'
$progressbar1.step = 1
#
# Label1
#
$label1 = new-object System.Windows.Forms.Label
$label1.Location = new-object System.Drawing.Point(70, 70)
$label1.Size = new-object System.Drawing.Size(139,13)
$label1.Text = 'Style continuous :'
#
$Form1 = new-object System.Windows.Forms.form
# Form1
#
$Form1.Controls.Add($label1)
$Form1.ClientSize = new-object System.Drawing.Size(284, 264)
$Form1.Controls.Add($progressBar1)
$Form1.Text = "Barre de progression - 1"
$timer.Add_Tick({
      $progressBar1.PerformStep()
})

$timer.Start()
$Form1.ShowDialog()


-> Pour plus d'informations sur la classe ProgressBar, veuillez vous réferrer à MSDN en cliquant ici. <-

Dernière mise à jour : ( 24-06-2008 )
 
© 2017 PowerShell-Scripting.com