Erstes Windows GUI

Posted on: 15. Januar 2019
Wir bauen unser erstes GUI mit Windows Forms. An diesem einfachen Beispiel zeige ich dir die kompletten Grundlagen für ein GUI mit PowerSHELL und einfache Funkionen beim Klicken auf einen Knopf.

Denk dran: solltest du Wünsche oder Anregungen für Themen und Beträge haben, dann lass es mich bitte wissen z.B. in einem Kommentar oder oben auf dem Input-Formular
Hier der Code aus dem Youtube-Video. Die Vorgehensweise und Bemerkungen findest du direkt als Kommentare (#Grün) im Code. So wird er dir ebenfalls in der PowerSHELL ISE angezeigt werden.
——————————————–
          
            
# Assemblies laden            
[reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null # Form Assembly            
[reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null # Zeichnungs Assembly            
            
# Erstellen der benötigten Objekte            
$MeinForm = New-Object System.Windows.Forms.Form            
$Ueberschrift = New-Object System.Windows.Forms.Label            
$Knopf = New-Object System.Windows.Forms.Button            
$InitialStatus = New-Object System.Windows.Forms.FormWindowState            
            
# Event-Funktionen erstellen            
            
# Alle System-Farben auslesen            
$AlleFarben = @()            
$AlleFarben =  ([System.Drawing.Color].DeclaredProperties).Name            
$AlleFarben = $AlleFarben[0..140]            
            
# Funktion beim Knopf-Klick            
$FarbWechsler =             
{            
            
$Knopf.BackColor = $AlleFarben[$(Get-Random -Minimum 0 -Maximum $AlleFarben.Count)]            
$MeinForm.BackColor = $AlleFarben[$(Get-Random -Minimum 0 -Maximum $AlleFarben.Count)]            
Write-Host "Farbe geändert auf Knopf:$($Knopf.BackColor) / und Formular:$($MeinForm.BackColor)" -ForegroundColor Yellow            
            
}            
            
# Formular Lade-Funktion            
$OnLoadForm_StatusKorrektur =            
{            
 $MeinForm.WindowState = $InitialStatus            
}            
            
# Code der einzelnen Formular Elemente            
            
# Grösse festlegen            
$ZeichnungsGroesse = New-Object System.Drawing.Size            
$ZeichnungsGroesse.Height = 300            
$ZeichnungsGroesse.Width = 300            
            
# Formular erstellen und festlegen            
$MeinForm.ClientSize = $ZeichnungsGroesse            
$MeinForm.Name = "Formular1"            
$MeinForm.Text = "GPS Test Form"            
            
# Überschrift definieren            
$Ueberschrift.Font = New-Object System.Drawing.Font("Segoe UI",12,1,3,0) # Schriftart, Grösse (Punkt), Stil (1 = Fett), Schriftsatz, Einheit (Punkt)            
$Ueberschrift.ForeColor = [System.Drawing.Color]::Black            
            
# Position für Überschrift festlegen            
$ZeichnungsPunkt = New-Object System.Drawing.Point            
$ZeichnungsPunkt.X = 15            
$ZeichnungsPunkt.Y = 15            
$Ueberschrift.Location = $ZeichnungsPunkt            
            
# Grösse der Überschrift festlegen            
$ZeichnungsGroesse = New-Object System.Drawing.Size            
$ZeichnungsGroesse.Height = 25            
$ZeichnungsGroesse.Width = 270            
$Ueberschrift.Name = "Ueberschrift1"            
$Ueberschrift.Size = $ZeichnungsGroesse            
$Ueberschrift.Text = "Meine Überschrift"            
            
# Überschrift zum Formular hinzufügen            
$MeinForm.Controls.Add($Ueberschrift)            
            
# Position und Grösse vom Knopf festlegen            
$ZeichnungsPunkt = New-Object System.Drawing.Point            
$ZeichnungsPunkt.X = 50            
$ZeichnungsPunkt.Y = 50            
$Knopf.Location = $ZeichnungsPunkt            
$ZeichnungsGroesse = New-Object System.Drawing.Size            
$ZeichnungsGroesse.Height = 200            
$ZeichnungsGroesse.Width = 200            
$Knopf.Size = $ZeichnungsGroesse            
            
# Optionen von Knopf festlegen            
$Knopf.Name = "Knopf1"            
$Knopf.BackColor = $AlleFarben[$(Get-Random -Minimum 0 -Maximum $AlleFarben.Count)]            
$Knopf.Text = "Wechsle Farbe"            
$Knopf.add_MouseClick($FarbWechsler)            
            
# Knopf zum Formular hinzufügen            
$MeinForm.Controls.Add($Knopf)            
            
# Initiale Optionen festlegen            
# Initialer Status speichern            
$InitialStatus = $MeinForm.WindowState            
            
# Ladefunktion definieren            
$MeinForm.add_Load($OnLoadForm_StatusKorrektur)            
            
# Formular anzeigen            
$MeinForm.ShowDialog()| Out-Null            
            
--------------------------------------------
Solltest du irgendwelche Fragen haben, dann kannst du diese gerne entweder hier im Blog oder direkt unter dem YouTube Video stellen. Ich gebe alles, deine Fragen zeitnahe zu beantworten oder ein entsprechendes Video darüber zu machen.
Gerade die Grundlagen-Videos werde ich nicht mit viel Text ausschmücken. Bei mir ist jeweils jede Code-Zeile direkt im Code Kommentiert (#Grün). Du kannst den Code direkt mit in dein Script kopieren und hast so eine gute Orientierungshilfe, sobald du die Scripts auf deine Bedürfnisse anpasst.

Ich erstelle und veröffentliche sämtliche Videos kostenlos und blende auch keine Werbung ein, dies will ich auch so beibehalten. Da das vermittelte Wissen aber in teuren Kursen erlangt werden kann, ist eine kleine Spende hin und wieder sicher keine schlechte Gegenleistung.