Я решил немного доработать функцию MessageBox из прошлой заметки, чтобы было удобнее с ней работать. Часть кода собрал из других примеров, часть дописал сам. В итоге теперь, если писать в PowerShell ISE, то будет выводится подсказка при наборе параметров и теперь сложнее будет ошибиться (например, при указании названия кнопок или значка).
function MessageBox
{
param (
[Parameter(Mandatory=$True,HelpMessage="The message text to display. Keep it short and simple.")]
[string]$Message,
[Parameter(HelpMessage="The message title")]
[string]$Title="Attention $env:username",
[ValidateSet('OK', 'OKCancel', 'YesNo', 'YesNoCancel')] # https://docs.microsoft.com/en-us/dotnet/api/system.windows.messageboxbutton?view=netframework-4.7.2
[Parameter(HelpMessage="Button name: OK', 'OKCancel', 'YesNo', 'YesNoCancel'")]
[string]$Button="OK",
[ValidateSet('Error','Warning','Information', 'None')] # https://docs.microsoft.com/en-us/dotnet/api/system.windows.messageboximage?view=netframework-4.7.2
[Parameter(HelpMessage="Icon name: Error, Warning, Information, None")]
[string]$Icon="None"
)
Add-Type -AssemblyName System.Windows.Forms
return [System.Windows.Forms.MessageBox]::Show($Message, $Title, $Button, $Icon)
}
## Example
$choice = MessageBox -Message "Press YES, NO or CANCEL" -Title "MessageBox Test" -Icon Warning -Button YesNoCancel
switch ($choice)
{
"Yes" { $result = "Button YES pressed"; Break }
"No" { $result = "Button NO pressed"; Break }
"Cancel" { $result = "Button CANCEL pressed"; Break }
}
Write-Output $result
DenTNT недавно публиковал (посмотреть все)
- C#: Сравнить два массива - 12.12.2024
- EVE-Online: Фильтры каналов - 23.11.2024
- Не приходит СМС для авторизации на сайте Госуслуги - 01.11.2024