Я создаю графический интерфейс и хочу, чтобы всплывающее окно сообщало, что оно занято, но затем закрывается, когда оно завершит эту конкретную задачу.Единственное, что я могу найти, это следующее ...
$popup = New-Object -ComObject wscript.shell
$popup.popup("Running Script, Please Wait....",0,"Running...",0x1)
Но проблема в том, что это ожидание ответа, а затем он запустит скрипт.Я не прошу некоторых написать мне сценарий, но некоторые рекомендации о том, где найти эту информацию.
Мне нужно PowerShell, чтобы открыть окно, а затем оставить его, пока выполняется скрипт, и затем закрыть его, когда скрипт завершится.Будет ли лучше просто иметь другую форму окна, которая запускает скрипт с надписью на нем?Это кажется чрезмерным количеством работы для простой задачи.Но это PowerShell ...
Есть ли что-то вроде ...
$popup = New-Object -ComObject wscript.shell
$popup.popup("Running Script, Please Wait....",0,"Running...",0x1)
###RUN SCRIPT HERE...
$popup.close()
РЕДАКТИРОВАТЬ ::: На вопрос "Почему я пытаюсь получить всплывающее окно, а не writeprogress иличто-то "... Причина в том, что я делаю это в графическом интерфейсе.Не в командной строке.Поэтому мне нужен графический интерфейс, чтобы в основном информировать человека, что он занят, выполнение некоторых задач может занять более 6 часов, и я не хочу, чтобы они щелкали и выполняли другие действия, пока выполняется текущая задача.
РЕДАКТИРОВАТЬ 2 ::: Я оставлю это открытым, так как исходный вопрос не был дан ответ, но я создал обходной вариант со следующим кодом.
$LabelAlert = New-Object system.windows.forms.label
$LabelAlert.Text = "Working, Please wait."
$LabelAlert.location = New-Object System.Drawing.Point(0,180)
$LabelAlert.width = 590
$LabelAlert.height = 25
$LabelAlert.Visible = $false
$LabelAlert.TextAlign = "TopCenter"
$Form.Controls.Add($LabelAlert)
$FormGroupBox = New-Object System.Windows.Forms.GroupBox
$FormGroupBox.Location = New-Object System.Drawing.Size(0,0)
$FormGroupBox.width = 600
$FormGroupBox.height = 375
$Form.Controls.Add($FormGroupBox)
$startAlert = {
$LabelAlert.Visible = $true
$FormGroupBox.Visible = $false
}
$stopAlert = {
$LabelAlert.Visible = $false
$FormGroupBox.Visible = $true
}
Каждая часть формы была перемещена внутригрупповая коробка.Размер группового блока совпадает с размером моего окна.
И для каждого скрипта, потребляющего время, я запускаю
&$startAlert
....script commands go here...
&$stopAlert