144 lines
12 KiB
PowerShell
144 lines
12 KiB
PowerShell
# Show message box popup.
|
||
Add-Type -AssemblyName System.Windows.Forms
|
||
$result = [System.Windows.Forms.MessageBox]::Show("My message", "Window Title", [System.Windows.Forms.MessageBoxButtons]::OK, [System.Windows.Forms.MessageBoxIcon]::None)
|
||
|
||
# Show input box popup.
|
||
Add-Type -AssemblyName Microsoft.VisualBasic
|
||
$inputText = [Microsoft.VisualBasic.Interaction]::InputBox("Enter some value:", "Window Title", "Default value")
|
||
|
||
# Show an Open File Dialog and return the file selected by the user.
|
||
function Read-OpenFileDialog([string]$InitialDirectory, [switch]$AllowMultiSelect)
|
||
{
|
||
Add-Type -AssemblyName System.Windows.Forms
|
||
$openFileDialog = New-Object System.Windows.Forms.OpenFileDialog
|
||
$openFileDialog.initialDirectory = $InitialDirectory
|
||
$openFileDialog.filter = "All files (*.*)| *.*"
|
||
if ($AllowMultiSelect) { $openFileDialog.MultiSelect = $true }
|
||
$openFileDialog.ShowDialog() > $null
|
||
if ($allowMultiSelect) { return $openFileDialog.Filenames } else { return $openFileDialog.Filename }
|
||
}
|
||
|
||
|
||
# Show an Open Folder Dialog and return the directory selected by the user.
|
||
function Read-FolderBrowserDialog([string]$InitialDirectory)
|
||
{
|
||
Add-Type -AssemblyName System.Windows.Forms
|
||
$openFolderDialog = New-Object System.Windows.Forms.FolderBrowserDialog
|
||
$openFolderDialog.ShowNewFolderButton = $true
|
||
$openFolderDialog.RootFolder = $InitialDirectory
|
||
$openFolderDialog.ShowDialog()
|
||
return $openFolderDialog.SelectedPath
|
||
}
|
||
|
||
# Prompt for multi-line user input:
|
||
function Read-MultiLineInputDialog([string]$Message, [string]$WindowTitle, [string]$DefaultText)
|
||
{
|
||
<#
|
||
.SYNOPSIS
|
||
Prompts the user with a multi-line input box and returns the text they enter, or null if they cancelled the prompt.
|
||
|
||
.DESCRIPTION
|
||
Prompts the user with a multi-line input box and returns the text they enter, or null if they cancelled the prompt.
|
||
|
||
.PARAMETER Message
|
||
The message to display to the user explaining what text we are asking them to enter.
|
||
|
||
.PARAMETER WindowTitle
|
||
The text to display on the prompt window's title.
|
||
|
||
.PARAMETER DefaultText
|
||
The default text to show in the input box.
|
||
|
||
.EXAMPLE
|
||
$userText = Read-MultiLineInputDialog "Input some text please:" "Get User's Input"
|
||
|
||
Shows how to create a simple prompt to get mutli-line input from a user.
|
||
|
||
.EXAMPLE
|
||
# Setup the default multi-line address to fill the input box with.
|
||
$defaultAddress = @'
|
||
John Doe
|
||
123 St.
|
||
Some Town, SK, Canada
|
||
A1B 2C3
|
||
'@
|
||
|
||
$address = Read-MultiLineInputDialog "Please enter your full address, including name, street, city, and postal code:" "Get User's Address" $defaultAddress
|
||
if ($address -eq $null)
|
||
{
|
||
Write-Error "You pressed the Cancel button on the multi-line input box."
|
||
}
|
||
|
||
Prompts the user for their address and stores it in a variable, pre-filling the input box with a default multi-line address.
|
||
If the user pressed the Cancel button an error is written to the console.
|
||
|
||
.EXAMPLE
|
||
$inputText = Read-MultiLineInputDialog -Message "If you have a really long message you can break it apart`nover two lines with the powershell newline character:" -WindowTitle "Window Title" -DefaultText "Default text for the input box."
|
||
|
||
Shows how to break the second parameter (Message) up onto two lines using the powershell newline character (`n).
|
||
If you break the message up into more than two lines the extra lines will be hidden behind or show ontop of the TextBox.
|
||
|
||
.NOTES
|
||
Name: Show-MultiLineInputDialog
|
||
Author: Daniel Schroeder (originally based on the code shown at http://technet.microsoft.com/en-us/library/ff730941.aspx)
|
||
Version: 1.0
|
||
#>
|
||
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(510,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(415,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(600,310)
|
||
$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
|
||
} |