En está ocasión veremos cómo crear entornos visuales en Powershell.
Una GUI (Graphical User Interface), un entorno visual con imágenes, botones, menús, iconos y otros componentes, facilita las acciones de un usuario.
Una buena interfaz de usuario debe ser intuitiva y nada compleja para usar.
Quien use una interfaz gráfica debe sentirse cómodo y no sentirse como un laberinto imposible de recorrer.
Powershell nos permite crear GUIs, gracias a los componentes gráficos de Microsoft .NET Framework. Podemos ver la documentación oficial: https://learn.microsoft.com/es-es/dotnet/desktop/
¿Para qué usar una interfaz gráfica?
Imaginemos que el usuario necesita apagar su computadora con un simple clic sobre un botón. Una simple ventanita con un botón de "Apagar" es más que suficiente que abrir el menú del sistema y buscar el apagado del sistema.
Otro ejemplo puede ser cuando requerimos comparar un archivo con otro, es más fácil hacerlo en un entorno gráfico que en una terminal de comandos.
Todo empieza desde está instancia:
$form = New-Object System.Windows.Forms.Form
Podemos ir agregando componentes como etiquetas, iconos, imágenes, botones, etc. Hagamos algunos ejemplos.
Creando interfaces gráficas en Powershell
Ejemplo 1. Vamos a crear una sencilla ventana que tenga un botón de salida.
ventana.ps1
Add-Type -AssemblyName System.Windows.Forms, System.Drawing $form = New-Object System.Windows.Forms.Form $form.Text = 'Ventana en Powershell' $form.StartPosition = 'CenterScreen' $btnExit = New-Object System.Windows.Forms.Button $btnExit.Size = New-Object System.Drawing.size(120,28) $btnExit.Text = 'Salir' $form.Controls.Add($btnExit) $btnExit.Add_Click({ $choice = [System.Windows.Forms.MessageBox]::Show('¿Desea cerrar la ventana?', 'Confirmar salida', [System.Windows.Forms.MessageBoxButtons]::YesNo, [System.Windows.Forms.MessageBoxIcon]::Question) if($choice -eq [System.Windows.Forms.DialogResult]::Yes){ try{$form.Close(); $form.Dispose();} catch{} } }) [void]$form.ShowDialog()
Ejecutamos:
$ powershell $ .\ventana.ps1
Salida:
¿Qué podemos observar? Hemos creado una ventana y hemos agregado un botón con el evento de salida. Además hemos agregado un evento de confirmación.
Ejemplo 2. Crearemos un programa que solicite una entrada numérica al usuario. Debe evaluar si es mayor o no a 100.
mayor.ps1
Add-Type -AssemblyName System.Windows.Forms Add-Type -AssemblyName System.Drawing $form = New-Object System.Windows.Forms.Form $form.Text = 'Introduce número' $form.Size = New-Object System.Drawing.Size(300,200) $form.StartPosition = 'CenterScreen' $okButton = New-Object System.Windows.Forms.Button $okButton.Location = New-Object System.Drawing.Point(75,120) $okButton.Size = New-Object System.Drawing.Size(75,23) $okButton.Text = 'OK' $okButton.DialogResult = [System.Windows.Forms.DialogResult]::OK $form.AcceptButton = $okButton $form.Controls.Add($okButton) $cancelButton = New-Object System.Windows.Forms.Button $cancelButton.Location = New-Object System.Drawing.Point(150,120) $cancelButton.Size = New-Object System.Drawing.Size(75,23) $cancelButton.Text = 'Cancel' $cancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel $form.CancelButton = $cancelButton $form.Controls.Add($cancelButton) $label = New-Object System.Windows.Forms.Label $label.Location = New-Object System.Drawing.Point(10,20) $label.Size = New-Object System.Drawing.Size(280,20) $label.Text = 'Por favor introduce la informacion de abajo:' $form.Controls.Add($label) $textBox = New-Object System.Windows.Forms.TextBox $textBox.Location = New-Object System.Drawing.Point(10,40) $textBox.Size = New-Object System.Drawing.Size(260,20) $form.Controls.Add($textBox) $form.Topmost = $true $form.Add_Shown({$textBox.Select()}) $result = $form.ShowDialog() if ($result -eq [System.Windows.Forms.DialogResult]::OK) { $x = $textBox.Text $numero = [int]$x Write-Host "Entrada: $numero" $Shell = New-Object -ComObject WScript.Shell if ($numero -gt 100){ $Response = $Shell.Popup("Es mayor a 100", 0, "Resultado", 0x40) }else{ $Response = $Shell.Popup("Es menor a 100", 0, "Resultado", 0x40) } }
Ejecutamos:
$ powershell $ .\mayor.ps1
Salida:
Si la entrada es mayor a 100, mostrará un mensaje.
Las interfaces gráficas son muy útiles para simplificar las actividades del usuario. Sobre todo cuando no tiene alto conocimiento de computación.
Continuaremos con este tema en próximas entregas.
Enlaces:
https://www.udemy.com/course/powershell-create-a-desktop-application-gui/https://devblogs.microsoft.com/powershell-community/simple-form-development-using-powershell/
https://maikthulhu.github.io/2018-07-14-powershell-forms-controls/
https://www.linkedin.com/advice/0/what-advantages-using-graphical-user-interface-6bu7c






Comentarios
Publicar un comentario