У меня есть скрипт с простым пользовательским интерфейсом на основе Write-Progress .

Как пример, разделитель:

$ui_seperator = '_' * (Get-Host).UI.RawUI.WindowSize.Width

Я хотел бы настроить этот разделитель всякий раз, когда изменяется WindowSize, но я не могу найти способ отслеживать сценарий в фоновом режиме.

Мне кажется, что-то вроде этого должно работать в рамках функции или работы:

while ($true) {

    if ($window_width -ne ($window_width = (Get-Host).UI.RawUI.WindowSize.Width)) {

        $ui_seperator = '_' * $window_width

    }
}

Тем не менее, функции и задания - это то, о чём я почти ничего не знаю, и я не смог найти никакого решения, как достичь желаемого результата. Любая помощь приветствуется! :)

1 ответ1

0

Я все еще изучаю (на практике) PowerShell, но я получил рабочий результат. Я написал 4 функции:

Линия разрыва

Предотвращает разбиение слов в конце строки.

Отрегулировать-Host

Перезаписывает выходные данные Break-Line, если ширина окна изменяется (отслеживает запущенный процесс или выполняется в течение определенной продолжительности или итераций).

Animate-Host

Простая точечная анимация (также отслеживает запущенный процесс или работает в течение определенной продолжительности или итераций).

Выбор-AdjustHost

Простое меню выбора - похоже на Choice.exe, но лучше (цвета выбранного варианта).


Это, вероятно, совсем не идеальный и «стресс-тест», в котором можно найти пару смещенных разделителей, кроме того, что он работает и тоже выглядит неплохо (если я так говорю).


Вы можете найти предварительный просмотр на Imgur: https://imgur.com/a/B3FNaej

И функции на Pastebin (слишком долго, чтобы вставить здесь): https://pastebin.com/q2012kxX

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .