Powershell GUI Bild einfügen
Guten Tag zusammen,
Ich habe eine Frage und zwar habe ich ein GUI und möchte auf dieses Gerne ein Logo 32*32 Pixel haben.
Und zwar habe ich schon versucht etwas versucht auf ´´Base64´´ aber es wird mir nicht angezeigt.
->Es wird auch keine Fehlermeldung gegeben
Was muss ich an dem Code ändern das das Logo eingeblendet wird?
Code von der Gui:
Code vom einzufügenden Bild:
Ich freue mich wenn mir einer Weiterhelfen könnte und noch erklären wie das ganze Funktuniert=)
Mit Freundlichen Grüßen
Stefan
Ich habe eine Frage und zwar habe ich ein GUI und möchte auf dieses Gerne ein Logo 32*32 Pixel haben.
Und zwar habe ich schon versucht etwas versucht auf ´´Base64´´ aber es wird mir nicht angezeigt.
->Es wird auch keine Fehlermeldung gegeben
Was muss ich an dem Code ändern das das Logo eingeblendet wird?
Code von der Gui:
Function Create-GetSchedTime {
Param( $SchedTime )
$script:StartTime = (Get-Date).AddSeconds($TotalTime)
$RestartDate = ((get-date).AddSeconds($TotalTime)).AddMinutes(-1)
$RDate = Get-Date $RestartDate -Format 'dd/MM/yyyy'
$RTime = Get-Date $RestartDate -Format 'HH:mm'
return @{
StartTime = $script:StartTime
RestartDate = $RestartDate
RDate = $RDate
RTime = $RTime
}
#& C:\Windows\System32\schtasks.exe /delete /tn "Post Maintenance Restart" /f
& C:\Windows\System32\schtasks.exe /create /sc once /tn "Post Maintenance Restart" /tr "'C:\Windows\system32\cmd.exe' /c shutdown /r /t 400" /SD $RDate /ST $RTime /f
}
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") | Out-Null
[System.Reflection.Assembly]::LoadWithPartialName( "Microsoft.VisualBasic") | Out-Null
$Title = "Nachricht vom IT-Helpdesk - Aktion erforderlich"
$Message = "Um die Installation von Windows-Updates abzuschließen, ist ein Neustart des Systems unerlässlich. Eine einfache Herunterfahrt genügt nicht. Bitte führen Sie einen Neustart durch."
$Button1Text = "Jetzt neu starten"
$Button2Text = "4 Std. Aufschub"
$Button3Text = "8 Std. Aufschub"
$FormColor = 'White'
$Form = $null
$Button1 = $null
$Button2 = $null
$Label = $null
$TextBox = $null
$Result = $null
$timerUpdate = New-Object 'System.Windows.Forms.Timer'
$TotalTime = 3600 #in seconds
Create-GetSchedTime -SchedTime $TotalTime
#Create-GetSchedTime -SchedTime $TotalTime
$timerUpdate_Tick={
# Define countdown timer
[TimeSpan]$span = $script:StartTime - (Get-Date)
# Update the display
$hours = "{0:00}" -f $span.Hours
$mins = "{0:00}" -f $span.Minutes
$secs = "{0:00}" -f $span.Seconds
$labelTime.Text = "{0}:{1}:{2}" -f $hours, $mins, $secs
$timerUpdate.Start()
if ($span.TotalSeconds -le 0) {
$timerUpdate.Stop()
& C:\Windows\System32\schtasks.exe /delete /tn "Post Maintenance Restart" /f
shutdown /r /t 0
}
}
$Form_StoreValues_Closing= {
#Store the control values
}
$Form_Cleanup_FormClosed= {
#Remove all event handlers from the controls
try {
$Form.remove_Load($Form_Load)
$timerUpdate.remove_Tick($timerUpdate_Tick)
#$Form.remove_Load($Form_StateCorrection_Load)
$Form.remove_Closing($Form_StoreValues_Closing)
$Form.remove_FormClosed($Form_Cleanup_FormClosed)
} catch [Exception] {
}
}
# Form
$Form = New-Object -TypeName System.Windows.Forms.Form
$Form.Text = $Title
$Form.Size = New-Object -TypeName System.Drawing.Size(500,220) # Erhöhen der Formulargröße
$Form.StartPosition = "CenterScreen"
$Form.ControlBox = $False
$Form.Topmost = $true
$Form.KeyPreview = $true
$Form.ShowInTaskbar = $False
$Form.FormBorderStyle = "FixedDialog"
$Form.MaximizeBox = $False
$Form.MinimizeBox = $False
$Form.BackColor = $FormColor
$Icon = [system.drawing.icon]::ExtractAssociatedIcon("c:\Windows\System32\UserAccountControlSettings.exe")
$Form.Icon = $Icon
# Button One (Reboot/Shutdown Now)
$Button1 = New-Object -TypeName System.Windows.Forms.Button
$Button1.Size = New-Object -TypeName System.Drawing.Size(150,40) # Erhöhen der Button-Größe
$Button1.Location = New-Object -TypeName System.Drawing.Size(20,140) # Verschieben des Buttons nach rechts
$Button1.Text = $Button1Text
$Button1.Font = 'Tahoma, 10pt'
$Button1.Add_Click({
& C:\Windows\System32\schtasks.exe /delete /tn "Post Maintenance Restart" /f
shutdown /r /t 0
$Form.Close()
})
$Form.Controls.Add($Button1)
# Button Two (Postpone for 4 Hours)
$Button2 = New-Object -TypeName System.Windows.Forms.Button
$Button2.Size = New-Object -TypeName System.Drawing.Size(150,40) # Erhöhen der Button-Größe
$Button2.Location = New-Object -TypeName System.Drawing.Size(175,140) # Zentrieren des Buttons
$Button2.Text = $Button2Text
$Button2.Font = 'Tahoma, 10pt'
$Button2.Add_Click({
$Button2.Enabled = $False
$timerUpdate.Stop()
$TotalTime = 14400
#$TotalTime = 120
Create-GetSchedTime -SchedTime $TotalTime
$timerUpdate.add_Tick($timerUpdate_Tick)
$timerUpdate.Start()
})
$Form.Controls.Add($Button2)
# Button Three (Postpone for 8 Hours)
$Button3 = New-Object -TypeName System.Windows.Forms.Button
$Button3.Size = New-Object -TypeName System.Drawing.Size(150,40) # Erhöhen der Button-Größe
$Button3.Location = New-Object -TypeName System.Drawing.Size(330,140) # Verschieben des Buttons nach links
$Button3.Text = $Button3Text
$Button3.Font = 'Tahoma, 10pt'
$Button3.Add_Click({
$Button3.Enabled = $False
$timerUpdate.Stop()
$TotalTime = 28800
#$TotalTime = 120
Create-GetSchedTime -SchedTime $TotalTime
$timerUpdate.add_Tick($timerUpdate_Tick)
$timerUpdate.Start()
})
$Form.Controls.Add($Button3)
# Label
$Label = New-Object -TypeName System.Windows.Forms.Label
$Label.Size = New-Object -TypeName System.Drawing.Size(475,60)
$Label.Location = New-Object -TypeName System.Drawing.Size(10,10)
$Label.Text = $Message
$Label.Font = 'Tahoma, 10pt'
$Form.Controls.Add($Label)
# Label2
$Label2 = New-Object -TypeName System.Windows.Forms.Label
$Label2.Size = New-Object -TypeName System.Drawing.Size(355,30)
$Label2.Location = New-Object -TypeName System.Drawing.Size(10,100)
$Label2.Text = $Message2
$label2.Font = 'Tahoma, 10pt'
$Form.Controls.Add($Label2)
# labelTime
$labelTime = New-Object 'System.Windows.Forms.Label'
$labelTime.AutoSize = $True
$labelTime.Font = 'Arial, 26pt, style=Bold'
$labelTime.Location = '175, 65' # Setzen Sie den Timer in die Mitte des Fensters
$labelTime.Name = 'labelTime'
$labelTime.Size = '43, 15'
$labelTime.TextAlign = 'MiddleCenter'
$labelTime.ForeColor = '242, 103, 34'
$Form.Controls.Add($labelTime)
# Start the timer
$timerUpdate.add_Tick($timerUpdate_Tick)
$timerUpdate.Start()
# Show
$Form.Add_Shown({$Form.Activate()})
# Clean up the control events
$Form.add_FormClosed($Form_Cleanup_FormClosed)
# Store the control values when the form is closing
$Form.add_Closing($Form_StoreValues_Closing)
# Show the Form
$Form.ShowDialog() | Out-Null
Code vom einzufügenden Bild:
Add-Type -AssemblyName System.Windows.Forms
[System.Windows.Forms.Application]::EnableVisualStyles()
$Form = New-Object system.Windows.Forms.Form
$Form.ClientSize = '400,230'
$Form.text = "Test"
$Form.TopMost = $false
# This base64 string holds the bytes that make up the orange 'G' icon (just an example for a 32x32 pixel image)
$iconBase64 = 'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTnU1rJkAAAB50lEQVRIS7WWzytEURTHZ2FhaWFhYWFhYWFhaWFh6c+wsGCapJBJU0hRSrOgLBVSmkQoSpqyUJISapIFJU0i1KQp1PG9826vO9+Z97Pr22dz3pxzv/PO/fUSkvxfOLYOx9bh2DocBzPZKlPtku2VuS7JtMlwIydUw7EnGO50Rd4ehPRdlru87GWUMZVU4LgOqLza0cP56PdHNga4NthgsUc+i3qIQOH9qDzAYLZTyiVd7Ah/8/lGztclNyLbY5JfksKxeuiKRvAzwOy93OsyR+9Pam6HajLHm5UfXhTQT34GqDH1eCGjTZxjkmqQmQ5+6Gdgth5NQLsoIRwca7AoTZ1k1UM0p7Y/QXCsof4sdOvRrRlgeZgyu49eY/0cTDO76ShzcJnTQ0O0NvA2XioWqjIrcKy5PdQ1kLl90CKsVC9F2GiYVVPuiQaDiRb1TzGWw9eHzoEiGGwO6hpHWFRe04vuu4pggCPIFPwowSWmAXa/qdKr5zaOaQBwyps6W+UEh/gGtasFlrjCKC2+ATia15WucHpf76vna/2ylVLntnmeRzbApsUQ4RXZwAFnAC7eMMLNSrWhDEC6RfUac1D3+sRew87HhVzvC4PjYLBecRxhDsByn/qEoYRqOLYOx9bh2DocWyaZ+APgBBKhVfsHwAAAAABJRU5ErkJggg=='
$iconBytes = [Convert]::FromBase64String($iconBase64)
# initialize a Memory stream holding the bytes
$stream = [System.IO.MemoryStream]::new($iconBytes, 0, $iconBytes.Length)
$Form.Icon = [System.Drawing.Icon]::FromHandle(([System.Drawing.Bitmap]::new($stream).GetHIcon()))
Ich freue mich wenn mir einer Weiterhelfen könnte und noch erklären wie das ganze Funktuniert=)
Mit Freundlichen Grüßen
Stefan
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 42017073569
Url: https://administrator.de/contentid/42017073569
Ausgedruckt am: 04.12.2024 um 08:12 Uhr
5 Kommentare
Neuester Kommentar
Einfach ne Picturebox nehmen
https://learn.microsoft.com/de-de/dotnet/api/system.windows.forms.pictur ...
Oder via Paint-Eventhandler direkt auf die Form zeichnen
Gruß
https://learn.microsoft.com/de-de/dotnet/api/system.windows.forms.pictur ...
Add-Type -A System.Windows.Forms
Add-Type -A System.Drawing
$iconBase64 = 'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTnU1rJkAAAB50lEQVRIS7WWzytEURTHZ2FhaWFhYWFhYWFhaWFh6c+wsGCapJBJU0hRSrOgLBVSmkQoSpqyUJISapIFJU0i1KQp1PG9826vO9+Z97Pr22dz3pxzv/PO/fUSkvxfOLYOx9bh2DocBzPZKlPtku2VuS7JtMlwIydUw7EnGO50Rd4ehPRdlru87GWUMZVU4LgOqLza0cP56PdHNga4NthgsUc+i3qIQOH9qDzAYLZTyiVd7Ah/8/lGztclNyLbY5JfksKxeuiKRvAzwOy93OsyR+9Pam6HajLHm5UfXhTQT34GqDH1eCGjTZxjkmqQmQ5+6Gdgth5NQLsoIRwca7AoTZ1k1UM0p7Y/QXCsof4sdOvRrRlgeZgyu49eY/0cTDO76ShzcJnTQ0O0NvA2XioWqjIrcKy5PdQ1kLl90CKsVC9F2GiYVVPuiQaDiRb1TzGWw9eHzoEiGGwO6hpHWFRe04vuu4pggCPIFPwowSWmAXa/qdKr5zaOaQBwyps6W+UEh/gGtasFlrjCKC2+ATia15WucHpf76vna/2ylVLntnmeRzbApsUQ4RXZwAFnAC7eMMLNSrWhDEC6RfUac1D3+sRew87HhVzvC4PjYLBecRxhDsByn/qEoYRqOLYOx9bh2DocWyaZ+APgBBKhVfsHwAAAAABJRU5ErkJggg=='
$stream = [System.IO.MemoryStream]::new([Convert]::FromBase64String($iconBase64))
$img = [System.Drawing.Image]::FromStream($stream)
$form = [System.Windows.Forms.Form]@{
ClientSize = '200,200'
Text = "Image in Picturebox"
}
$pbox = [System.Windows.Forms.PictureBox]@{
Location = '10,10'
Size = '32,32'
Image = $img
}
$form.Controls.Add($pbox)
[void]$form.ShowDialog()
$img.Dispose()
$stream.Dispose()
Oder via Paint-Eventhandler direkt auf die Form zeichnen
Add-Type -A System.Windows.Forms
Add-Type -A System.Drawing
$iconBase64 = 'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTnU1rJkAAAB50lEQVRIS7WWzytEURTHZ2FhaWFhYWFhYWFhaWFh6c+wsGCapJBJU0hRSrOgLBVSmkQoSpqyUJISapIFJU0i1KQp1PG9826vO9+Z97Pr22dz3pxzv/PO/fUSkvxfOLYOx9bh2DocBzPZKlPtku2VuS7JtMlwIydUw7EnGO50Rd4ehPRdlru87GWUMZVU4LgOqLza0cP56PdHNga4NthgsUc+i3qIQOH9qDzAYLZTyiVd7Ah/8/lGztclNyLbY5JfksKxeuiKRvAzwOy93OsyR+9Pam6HajLHm5UfXhTQT34GqDH1eCGjTZxjkmqQmQ5+6Gdgth5NQLsoIRwca7AoTZ1k1UM0p7Y/QXCsof4sdOvRrRlgeZgyu49eY/0cTDO76ShzcJnTQ0O0NvA2XioWqjIrcKy5PdQ1kLl90CKsVC9F2GiYVVPuiQaDiRb1TzGWw9eHzoEiGGwO6hpHWFRe04vuu4pggCPIFPwowSWmAXa/qdKr5zaOaQBwyps6W+UEh/gGtasFlrjCKC2+ATia15WucHpf76vna/2ylVLntnmeRzbApsUQ4RXZwAFnAC7eMMLNSrWhDEC6RfUac1D3+sRew87HhVzvC4PjYLBecRxhDsByn/qEoYRqOLYOx9bh2DocWyaZ+APgBBKhVfsHwAAAAABJRU5ErkJggg=='
$stream = [System.IO.MemoryStream]::new([Convert]::FromBase64String($iconBase64))
$img = [System.Drawing.Image]::FromStream($stream)
$form = [System.Windows.Forms.Form]@{
ClientSize = '200,200'
Text = "Image on Form"
}
$form.add_Paint({
$_.Graphics.DrawImage($img,10,10,32,32)
})
[void]$form.ShowDialog()
$img.Dispose()
$stream.Dispose()
Gruß
OMG 😂 ...... kann man sich anstellen, das kommt wenn man nur Copy n Paste macht ohne den Code zu erst mal zu lesen und zu verstehen. Das war natürlich nur eine komplette Beispiel-Form um zu zeigen wie man ein Bild in eine Form einfügt!!!! Du brauchst daraus natürlich nur das Control für die Picturebox nicht die ganze Form 🙈🙈
Du brauchst also nur den Teil: (Position des Bildes natürlich im Picturebox Objekt an eigene Bedürfnisse anpassen, sonst wird es vom Textfeld verdeckt )
Röhrich würde jetzt sagen, Hände weg vom Allohol und ab in die Berufsschule .
Du brauchst also nur den Teil: (Position des Bildes natürlich im Picturebox Objekt an eigene Bedürfnisse anpassen, sonst wird es vom Textfeld verdeckt )
Add-Type -A System.Drawing
# Bild erzeugen
$iconBase64 = 'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTnU1rJkAAAB50lEQVRIS7WWzytEURTHZ2FhaWFhYWFhYWFhaWFh6c+wsGCapJBJU0hRSrOgLBVSmkQoSpqyUJISapIFJU0i1KQp1PG9826vO9+Z97Pr22dz3pxzv/PO/fUSkvxfOLYOx9bh2DocBzPZKlPtku2VuS7JtMlwIydUw7EnGO50Rd4ehPRdlru87GWUMZVU4LgOqLza0cP56PdHNga4NthgsUc+i3qIQOH9qDzAYLZTyiVd7Ah/8/lGztclNyLbY5JfksKxeuiKRvAzwOy93OsyR+9Pam6HajLHm5UfXhTQT34GqDH1eCGjTZxjkmqQmQ5+6Gdgth5NQLsoIRwca7AoTZ1k1UM0p7Y/QXCsof4sdOvRrRlgeZgyu49eY/0cTDO76ShzcJnTQ0O0NvA2XioWqjIrcKy5PdQ1kLl90CKsVC9F2GiYVVPuiQaDiRb1TzGWw9eHzoEiGGwO6hpHWFRe04vuu4pggCPIFPwowSWmAXa/qdKr5zaOaQBwyps6W+UEh/gGtasFlrjCKC2+ATia15WucHpf76vna/2ylVLntnmeRzbApsUQ4RXZwAFnAC7eMMLNSrWhDEC6RfUac1D3+sRew87HhVzvC4PjYLBecRxhDsByn/qEoYRqOLYOx9bh2DocWyaZ+APgBBKhVfsHwAAAAABJRU5ErkJggg=='
$stream = [System.IO.MemoryStream]::new([Convert]::FromBase64String($iconBase64))
$img = [System.Drawing.Image]::FromStream($stream)
# picturebox mit Bild erzeugen
$pbox = [System.Windows.Forms.PictureBox]@{
Location = '10,10'
Size = '32,32'
Image = $img
}
# control der Form hinzufügen.
$Form.Controls.Add($pbox)
Röhrich würde jetzt sagen, Hände weg vom Allohol und ab in die Berufsschule .