Table des matières

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é.

Comment faire ?

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

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

[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 :

Interprétation des retours

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
}