-
-
Save blinksmith/acefc6c3bcf7764375f3 to your computer and use it in GitHub Desktop.
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
# 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 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment