Форум программистов, компьютерный форум, киберфорум
PowerShell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/55: Рейтинг темы: голосов - 55, средняя оценка - 4.93
 Аватар для mutaborio
1 / 1 / 0
Регистрация: 06.10.2017
Сообщений: 39

Ожидание нажатия любой клавиши в ISE

06.10.2017, 17:05. Показов 11688. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите, плз, в ConsoleHost работает, в ISE нет:
PowerShell
1
$host.UI.RawUI.ReadKey('NoEcho, IncludeKeyDown') | Out-Null
Требуется при выполнении сценария встать на паузу и после нажатия любой клавиши продолжить.
Не хочется использовать Read-Host.

Возможно как-то использовать [System.Console]::KeyAvailable или [Console]::ReadKey("")?
Или есть другие способы?
PS v1.0

Добавлено через 46 минут
Можно, конечно и так - из ISE открывается окно ConsoleHost и ждет нажатия, но как-то это коряво...
PowerShell
1
2
3
4
Start-Process PowerShell {
    Write-Host "Нажмите любую клавишу..."
    [void][System.Console]::ReadKey($true)
    } -wait
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.10.2017, 17:05
Ответы с готовыми решениями:

Пауза (ожидание нажатия любой клавиши)
В windows паузу можно сделать через getch(), которая хранится в conio.h. А убунту почему-то не знает такого файла. есть аналог ожидания...

Ожидание нажатия клавиши
У меня ниже представлен код. Как сделать что б на указанном участке прорамма приостановилась и ждала нажатия клавиши для дальнейшего...

Ожидание нажатия клавиши
А подскажите пожалуйста, как в С++ сделать так, чтобы программа, написанная в консольных приложениях, продолжала свою работу только после...

9
Любознательный
 Аватар для YuS_2
7405 / 2255 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
07.10.2017, 13:27
Цитата Сообщение от mutaborio Посмотреть сообщение
из ISE открывается окно ConsoleHost и ждет нажатия, но как-то это коряво...
PowerShell
1
2
3
4
5
6
7
8
9
10
11
#$msg = "Press any key continue"
function pause ($msg) {
    if ($psise){        
        add-type -assem system.windows.forms
        [windows.forms.messagebox]::Show("$msg")
    } else {
        write-host "$msg" -fore yellow
        $host.ui.rawui.readkey('noecho, includekeydown') | out-null
    }
}
pause "press button..."
Цитата Сообщение от mutaborio Посмотреть сообщение
PS v1.0
хмм... этот труп пора бы и проапгрейдить
1
 Аватар для mutaborio
1 / 1 / 0
Регистрация: 06.10.2017
Сообщений: 39
09.10.2017, 10:16  [ТС]
Спасибо!
Добавил [void]
PowerShell
1
[void][windows.forms.messagebox]::Show("$msg")
в данном случае не обязательно визуальное подтверждение нажатия, просто продолжается выполнение

Помогло избавиться и от этого
PowerShell
1
2
3
4
5
6
7
8
9
10
11
$Shell = $Host.Name
If ($Shell.ToLower().Contains("consolehost")) {
        Write-Host "Нажмите любую клавишу..."
        $host.UI.RawUI.ReadKey('NoEcho, IncludeKeyDown') | Out-Null
        }
If ($Shell.ToLower().Contains("ise")) {
        Start-Process PowerShell {
                Write-Host "Нажмите любую клавишу..."
                [void][System.Console]::ReadKey($true)
                } -wait
        }
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
09.10.2017, 10:45
Цитата Сообщение от mutaborio Посмотреть сообщение
PowerShell
1
2
$Shell = $Host.Name
$Shell.ToLower().Contains("consolehost")
Если вместо ToLower().Contains(), по какой-то причине не хотите использовать простое сравнение $Shell -match 'consolehost', тогда хотя бы ToLower() можно не писать дважды:

PowerShell
1
$Shell = $Host.Name.ToLower()
0
 Аватар для mutaborio
1 / 1 / 0
Регистрация: 06.10.2017
Сообщений: 39
09.10.2017, 11:42  [ТС]
Согласен, возможно, позже бы к этому пришел... (если бы этот блок остался)

Добавлено через 46 минут
Цитата Сообщение от YuS_2 Посмотреть сообщение
хмм... этот труп пора бы и проапгрейдить
Пардон за дезинформацию - версия 2.0
Обновлюсь до 5.1
0
 Аватар для mutaborio
1 / 1 / 0
Регистрация: 06.10.2017
Сообщений: 39
10.10.2017, 15:50  [ТС]
Цитата Сообщение от YuS_2 Посмотреть сообщение
PowerShell
1
2
3
4
5
6
7
8
9
10
11
#$msg = "Press any key continue"
function pause ($msg) {
 if ($psise){ 
 add-type -assem system.windows.forms
 [windows.forms.messagebox]::Show("$msg")
 } else {
 write-host "$msg" -fore yellow
 $host.ui.rawui.readkey('noecho, includekeydown') | out-null
 }
}
pause "press button..."
И все-таки это не то, здесь в ISE требуется нажатие Enter или Esc, а не "Any key"
Пока в поиске решения

Добавлено через 2 часа 50 минут
Пропустил, еще на Space срабатывает.
Если не заморачиваться, то можно с этим смириться и просто подходящий текст в окне выводить, или как возможное решение - забить в массив все клавиши. Но это же PowerShell, черт возьми, ключевое слово POWER. И где эта мощь, если такую простейшую функцию нормально не реализовать, которая даже в DOS работала, прогресс, твою мышь
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
10.10.2017, 17:08
Цитата Сообщение от mutaborio Посмотреть сообщение
Если не заморачиваться, то можно с этим смириться и просто подходящий текст в окне выводить, или как возможное решение - забить в массив все клавиши. Но это же PowerShell, черт возьми, ключевое слово POWER. И где эта мощь, если такую простейшую функцию нормально не реализовать, которая даже в DOS работала
Ну так в consolehost "Press any key continue" работает, как и в DOS'е

А ISE (GUI-приложение) это же совсем не про консоль, это скорее IDE для разработки/отладки. А вызывая messagebox с единственной кнопкой ОК, логично просто написать: 'Click Ok to Continue'
0
 Аватар для mutaborio
1 / 1 / 0
Регистрация: 06.10.2017
Сообщений: 39
10.10.2017, 17:59  [ТС]
Возможно, я слишком много требую...

P.S. Кто-то скажет: это же Microsoft, в Linux все просто...
0
Любознательный
 Аватар для YuS_2
7405 / 2255 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
10.10.2017, 19:44
Цитата Сообщение от mutaborio Посмотреть сообщение
в Linux все просто...
В linux, это консоль так или иначе, а вот ISE, как, совершенно верно, объяснили выше, это:
Цитата Сообщение от KDE777 Посмотреть сообщение
ISE (GUI-приложение) это же совсем не про консоль
0
 Аватар для mutaborio
1 / 1 / 0
Регистрация: 06.10.2017
Сообщений: 39
11.10.2017, 11:35  [ТС]
ISE используется для отладки, но смысл отладки теряется, т.к. результат отличается.
Поправьте, если я не прав: в идеале, что я вижу в области вывода и нажимаю при отладке, то же самое я должен видеть и нажимать при выполнении в консоле.
Если я не ошибаюсь, в 5 версии PS область вывода и есть консоль, отладка проходит "гладко". Выполнение моего сценария в 5.1 проходит с ошибками, а редактировать сейчас нет желания, поэтому пока остался на 2.0, позже разберусь.
Спасибо, оставил пока так
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
# Функция ожидания нажатия клавиши
Function Pause ($Msg) {
    if ($psise){
        # Если выполняется в ISE       
        Add-Type -assem System.Windows.Forms
        [void][Windows.Forms.MessageBox]::Show("$Msg")
        } else {
            # Если выполняется в ConsoleHost
            Write-Host "$Msg"
            $host.UI.RawUI.ReadKey('NoEcho, IncludeKeyDown') | Out-Null
            }
} # End Function
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.10.2017, 11:35
Помогаю со студенческими работами здесь

Ожидание нажатия клавиши в jTextField
Хочу реализовать такую штуку: в поле jTextArea задается вопрос, например: "Введите имя", затем нужно перейти в jTextField, ввести имя...

Ожидание нажатия клавиши (sh скрипт)
Доброго времени суток. У меня появилась необходимость запускать скрипт при старте ОС. Добавил исполняемые команды в /etc/rc.local, но...

Отсутствует ожидание нажатия клавиши в keypressed
Добрый вечер, форумчане. Проблема такая, что при запуске программы пропускается вот этот блок if keypressed then ch:=readkey; ...

Ожидание нажатия клавиши определенное время
Здравствуйте, пишу игру на си - Hit the mole. Смысл в том, что каждые 5 секунд, например, нужно генерировать число случайное, выводить...

Ожидание нажатия клавиши для закрытия консоли
Если запускать программу не через среду программирования, то она выполняется и, не дав разглядеть результат, закрывается. В C++ на этот...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru