Я запускаю подсказку в PowerShell, где пользователь может внести свой вклад. Но я хотел бы поймать действие, когда пользователь нажимает кнопку "Отмена".
Есть ли способ определить, когда пользователь нажимает кнопку "Отмена" в окне подсказки в PowerShell? Или этот параметр не встроен в PowerShell?
1 ответ
Изменить: На самом деле я нашел похожую (возможно, полезную) тему здесь.
Пожалуйста, обратитесь к этой теме на Technet.
Объяснение, которое вы можете найти полезным:
Говоря о кнопках ОК и Отмена, это наш следующий шаг; этот блок кода добавляет кнопку с надписью OK к нашей форме:
$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Size(75,120)
$OKButton.Size = New-Object System.Drawing.Size(75,23)
$OKButton.Text = "OK"
$OKButton.Add_Click({$x=$objTextBox.Text;$objForm.Close()})
$objForm.Controls.Add($OKButton)
Чтобы добавить кнопку, мы сначала создаем экземпляр системы.Окна.Формы.Класс кнопки. (Кстати, это стандартная тема при работе с формами: каждый раз, когда вы добавляете новый элемент управления, вы обычно создаете новый экземпляр класса .NET Framework.) Затем мы указываем значение для свойства Location (в этом случае наша кнопка расположена в 75 пикселях с левой стороны формы и на 120 пикселей вниз от верхней части формы); затем присвойте значения свойствам «Размер» и «Текст». После этого мы используем эту строку кода, чтобы указать, что должно произойти, когда пользователь нажимает эту кнопку:
$OKButton.Add_Click({$x=$objTextBox.Text;$objForm.close()})
Выглядит знакомо? Должно; это то же самое, что мы хотим, если пользователь нажимает кнопку ENTER: мы хотим присвоить значение в нашем текстовом поле $ x, и мы хотим закрыть форму. Просто, да? Затем мы используем метод Add для добавления кнопки в форму:
$objForm.Controls.Add($OKButton)
И затем мы повторяем процесс, чтобы добавить кнопку «Отмена».
Теперь мы можем ввести в текстовое поле все, что захотим, и затем нажать клавишу ВВОД (или нажать ОК). Когда мы это сделаем, форма исчезнет, и значение, которое мы ввели в текстовое поле, будет сохранено в переменной $ x. (Что-то, что мы проверяем, возвращая значение $ x с нашей последней строкой кода.) В качестве альтернативы, мы можем нажать ESC или нажать кнопку «Отмена», и форма исчезнет без изменения значения $ x.