Last active
April 16, 2017 09:15
-
-
Save goyalmohit/3e17aefb09ca38c4384279dc13e6b4b3 to your computer and use it in GitHub Desktop.
Read multi line input from users in PowerShell using messagebox
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# This script is used in a blog post on the https://mohitgoyal.co/2017/04/16/read-multi-line-input-from-users-in-powershell/. Please | |
# read the blog post for more information | |
function Read-MultiLineInputBoxDialog([string]$Message, [string]$WindowTitle, [string]$DefaultText) | |
{ | |
Add-Type -AssemblyName System.Drawing | |
Add-Type -AssemblyName System.Windows.Forms | |
# Create the Label. | |
$label = New-Object System.Windows.Forms.Label | |
$label.Location = New-Object System.Drawing.Size(10,10) | |
$label.Size = New-Object System.Drawing.Size(280,20) | |
$label.AutoSize = $true | |
$label.Text = $Message | |
# Create the TextBox used to capture the user's text. | |
$textBox = New-Object System.Windows.Forms.TextBox | |
$textBox.Location = New-Object System.Drawing.Size(10,40) | |
$textBox.Size = New-Object System.Drawing.Size(575,200) | |
$textBox.AcceptsReturn = $true | |
$textBox.AcceptsTab = $false | |
$textBox.Multiline = $true | |
$textBox.ScrollBars = 'Both' | |
$textBox.Text = $DefaultText | |
# Create the OK button. | |
$okButton = New-Object System.Windows.Forms.Button | |
$okButton.Location = New-Object System.Drawing.Size(415,250) | |
$okButton.Size = New-Object System.Drawing.Size(75,25) | |
$okButton.Text = "OK" | |
$okButton.Add_Click({ $form.Tag = $textBox.Text; $form.Close() }) | |
# Create the Cancel button. | |
$cancelButton = New-Object System.Windows.Forms.Button | |
$cancelButton.Location = New-Object System.Drawing.Size(510,250) | |
$cancelButton.Size = New-Object System.Drawing.Size(75,25) | |
$cancelButton.Text = "Cancel" | |
$cancelButton.Add_Click({ $form.Tag = $null; $form.Close() }) | |
# Create the form. | |
$form = New-Object System.Windows.Forms.Form | |
$form.Text = $WindowTitle | |
$form.Size = New-Object System.Drawing.Size(610,320) | |
$form.FormBorderStyle = 'FixedSingle' | |
$form.StartPosition = "CenterScreen" | |
$form.AutoSizeMode = 'GrowAndShrink' | |
$form.Topmost = $True | |
$form.AcceptButton = $okButton | |
$form.CancelButton = $cancelButton | |
$form.ShowInTaskbar = $true | |
# Add all of the controls to the form. | |
$form.Controls.Add($label) | |
$form.Controls.Add($textBox) | |
$form.Controls.Add($okButton) | |
$form.Controls.Add($cancelButton) | |
# Initialize and show the form. | |
$form.Add_Shown({$form.Activate()}) | |
$form.ShowDialog() > $null # Trash the text of the button that was clicked. | |
# Return the text that the user entered. | |
return $form.Tag | |
} | |
$multiLineText = Read-MultiLineInputBoxDialog -Message "Please enter some text. It can be multiple lines" -WindowTitle "Multi Line Example" -DefaultText "Enter some text here..." | |
if ($multiLineText -eq $null) { Write-Host "You clicked Cancel" } | |
else { Write-Host "You entered the following text: $multiLineText" } | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment