Извиняюсь за вопрос, на который у Google уже есть тонна ответов, к сожалению, они либо связаны с C #, либо опробовали различные ответы, не работают для меня (некоторые из которых приведены в примере ниже).
Я застрял, чувствуя ограничения ShowDialog()
.
У меня есть скрипт, который делает x , оставляет файл журнала в y , затем перезагружает машину.Когда устройство возвращается, ожидается, что конечный пользователь снова запустит сценарий, после чего он ищет файл журнала в y , а затем завершит задачу, выполнив z .
На самом деле он делает то, что мне нужно, но делает это тихо до завершения, прежде чем представить графический интерфейс с моим текстовым полем, полностью заполненным выводом, который я ожидаю увидеть добавленным на лету.
В приведенном ниже примере первый запуск имитирует задание x , после чего скрипт закрывается и перезапускается.sleep 5
предназначен для демонстрации зависаний или нагрузок на заднем плане.
$form = New-Object Windows.Forms.Form
$form.ClientSize = New-Object Drawing.Size(200, 200)
$label = New-Object System.Windows.Forms.Label
$label.Height = 50
$label.Width = 100
$label.Text = "hello world"
$button = New-Object System.Windows.Forms.Button
$button.Height = 30
$button.Width = 100
$button.Left = 60
$button.Top = 100
$button.Text = "press me"
$button.Add_Click({
$label.Text = "goodbye world"
"file created" | Out-File $env:temp\testform.txt -Force ascii
})
$form.Controls.Add($label)
$form.Controls.Add($button)
$form.Controls.Add($checkbox)
if ((Test-Path "$env:temp\testform.txt")) {
Sleep 5
$label.Text = "IF found the file"
"IF processes everything within before showing the dialog." |
Add-Content $env:temp\testform.txt
}
$form.Add_activated({
Sleep 5
$label.Text = "Activated found the file $i"
"activate keeps looping the same response every time the form has is clicked." |
Add-Content $env:temp\testform.txt
})
$form.Add_load({
Sleep 5
$label.Text = "Loaded found the file $i"
"Load processes everything within before showing the dialog." |
Add-Content $env:temp\testform.txt
})
$form.ShowDialog()