Afficher des boîtes de dialogues

CréationNicolas THOREZ 2019/05/19 12:09

Lors de l'execution d'un script, les différents messages s'affichent dans la console. Cependant, il peut arriver que l'on souhaite afficher une boîte de dialogue pour afficher un message précis ou avertir d'une erreur. Les bibliothèques .NET offrent cette possibilité.

  • On commence par charger la bibliothèque nécessaire :

[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")

  • Ensuite, nous avons besoin de déterminer 4 variables :
    • $Message : la seule variable réellement obligatoire. Elle stocke le message affiché dans le corps de la boîte de dialogue.
    • $Titre : On indique avec cette variable le titre de la boîte de dialogue.
    • $Type On indique grâce à un chiffre le type de boîte de dialogue souhaité, représenté par les différents boutons présents. On trouvera comme choix possibles :
      • 0 : Bouton OK seul.
      • 1 : OK et Annuler
      • 2 : Abandonner, Recommencer et Ignorer
      • 3 : Oui, Non et Annuler
      • 4 : Oui et Non
      • 5 : Recommencer et Annuler
    • $Icone : Cette variable indique l'icône que l'on souhaite afficher dans la boîte de dialogue. On a le choix entre :
      • 0 : Aucune.
      • 16 : Erreur (croix blanche dans cercle rouge).
      • 32 : Question (point d'interrogation blanc dans cercle bleu).
      • 48 : Avertissement (point d'exclamation noir dans triangle jaune).
      • 64 : Information (i blanc dans cercle bleu).
  • Cela nous donne donc les déclarations suivantes :

$Message = "C'est sympa, non?"
$Titre = "ShyrkaSystem"
$Type = 4
$Icone = 32

  • Il nous reste plus qu'à affiché la boîte de dialogue :

[System.Windows.Forms.MessageBox]::Show($Message, $Titre , $Type, $Icone)

Code complet :

# Chargement des bibliothèques
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")

# Déclarations des variables
$Message = "C'est sympa, non?"
$Titre = "ShyrkaSystem"
$Type = 4
$Icone = 32

# Chargement de la boîte de dialogue
[System.Windows.Forms.MessageBox]::Show($Message, $Titre , $Type, $Icone)

Le résultat que l'on obtient est :

En cliquant sur un bouton, la boîte de dialogue se ferme et renvoie dans la console le nom du bouton (en anglais). Ainsi, il est possible de stocker cette information dans une variable :

$MessageBox = [System.Windows.Forms.MessageBox]::Show($Message, $Titre , $Type, $Icone)
On peut ainsi traiter le retour en appliquant un test (if/switch) à la variable. Par exemple :
# Chargement des bibliothèques
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")

# Déclarations des variables
$Message = "C'est sympa, non?"
$Titre = "ShyrkaSystem"
$Type = 4
$Icone = 32

# Chargement de la boîte de dialogue
$MessageBox = [System.Windows.Forms.MessageBox]::Show($Message, $Titre , $Type, $Icone)

# Traitement du retour
# Ecriture dans la console du retour en vert si on clique sur "Oui" ou rouge si c'est "Non"
If ($MessageBox -eq "Yes")
{
    Write-Host $MessageBox -ForegroundColor Green
}
Else
{
    Write-Host $MessageBox -ForegroundColor Red
}

, 2025/12/04 15:17

merci pour ce tuto

, 2025/12/04 18:32

Si cela a pu vous être utile, j'en suis ravi.

Entrer votre commentaire. La syntaxe wiki est autorisée:
 
  • powershell_messagebox.txt
  • Dernière modification : 2021/03/05 16:00
  • de nekan