123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- Param (
- [string]$file = "",
- [string]$text = "",
- [string]$buttons = "OK:0",
- [string]$default = "",
- [switch]$nearmouse = $false,
- [switch]$center = $false,
- [string]$geometry = "",
- [int32]$timeout = 0,
- [string]$title = "Message"
- )
- Add-Type -assembly System.Windows.Forms
- $global:Result = 0
- $main_form = New-Object System.Windows.Forms.Form
- $main_form.Text = $title
- $geometry_data = $geometry.Split("+")
- if ($geometry_data.Length -ge 1) {
- $size_data = $geometry_data[0].Split("x")
- if ($size_data.Length -eq 2) {
- $main_form.Width = $size_data[0]
- $main_form.Height = $size_data[1]
- }
- }
- if ($geometry_data.Length -eq 3) {
- $main_form.StartPosition = [System.Windows.Forms.FormStartPosition]::Manual
- $main_form.Location = New-Object System.Drawing.Point($geometry_data[1], $geometry_data[2])
- }
- if ($nearmouse) {
- $main_form.StartPosition = [System.Windows.Forms.FormStartPosition]::Manual
- $main_form.Location = System.Windows.Forms.Cursor.Position
- }
- if ($center) {
- $main_form.StartPosition = [System.Windows.Forms.FormStartPosition]::CenterScreen
- }
- $main_form.SuspendLayout()
- $button_panel = New-Object System.Windows.Forms.FlowLayoutPanel
- $button_panel.SuspendLayout()
- $button_panel.FlowDirection = [System.Windows.Forms.FlowDirection]::RightToLeft
- $button_panel.Dock = [System.Windows.Forms.DockStyle]::Bottom
- $button_panel.Autosize = $true
- if ($file -ne "") {
- $text = [IO.File]::ReadAllText($file).replace("`n", "`r`n")
- }
- if ($text -ne "") {
- $text_box = New-Object System.Windows.Forms.TextBox
- $text_box.Multiline = $true
- $text_box.ReadOnly = $true
- $text_box.Autosize = $true
- $text_box.Text = $text
- $text_box.Select(0,0)
- $text_box.Dock = [System.Windows.Forms.DockStyle]::Fill
- $main_form.Controls.Add($text_box)
- }
- $buttons_array = $buttons.Split(",")
- foreach ($button in $buttons_array) {
- $button_data = $button.Split(":")
- $button_ctl = New-Object System.Windows.Forms.Button
- if ($button_data.Length -eq 2) {
- $button_ctl.Tag = $button_data[1]
- } else {
- $button_ctl.Tag = 100 + $buttons_array.IndexOf($button)
- }
- if ($default -eq $button_data[0]) {
- $main_form.AcceptButton = $button_ctl
- }
- $button_ctl.Autosize = $true
- $button_ctl.Text = $button_data[0]
- $button_ctl.Add_Click(
- {
- Param($sender)
- $global:Result = $sender.Tag
- $main_form.Close()
- }
- )
- $button_panel.Controls.Add($button_ctl)
- }
- $main_form.Controls.Add($button_panel)
- $button_panel.ResumeLayout($false)
- $main_form.ResumeLayout($false)
- if ($timeout -gt 0) {
- $timer = New-Object System.Windows.Forms.Timer
- $timer.Add_Tick(
- {
- $global:Result = 0
- $main_form.Close()
- }
- )
- $timer.Interval = $timeout
- $timer.Start()
- }
- $dlg_res = $main_form.ShowDialog()
- [Environment]::Exit($global:Result)
|