Мне нужно что-то подобное сегодня. Так как я не смог найти решение для внешних зависимостей, которое мне понравилось, так как я на самом деле не фанат VBScript/Powershell, я решил написать следующее:
https://github.com/cubiclesoft/messagebox-windows
Окна сообщений, которые он создает, являются модальными для текущего окна консоли. То есть пользователь не может ничего сделать, пока не закроет диалог. Кроме того, код возврата из вызова MessageBox()
возвращается вызывающей стороне, чтобы скрипт мог реагировать на нажатие любой кнопки. И, конечно же, он поддерживает полный набор параметров Win32 API MessageBox()
.
Добавление исполняемого файла размером 80 КБ может не быть чашей чая для всех. Тем не менее, он статически связан с средой выполнения VC++ и поддерживает Unicode, что объясняет, почему файл такой большой, учитывая минималистический характер его работы. Кроме того, существует небольшая проблема, заключающаяся в невозможности простого перехода на новые строки из командной строки для отображения многострочных сообщений. С другой стороны, он отображает диалог за меньшее время, чем любое другое решение, представленное до сих пор.
Конечно, если размер файла не имеет значения, а диалоги создают слишком "пользовательский" интерфейс и / или не требуют взаимодействия с пользователем, я также столкнулся с этим изящным проектом:
https://www.paralint.com/projects/notifu/
Который отображает всплывающую подсказку в области уведомлений о состоянии экрана, используя IUserNotification. Недостатком является то, что исполняемый файл Notifu работает всего лишь 240 КБ. Еще один прискорбный пример того, что COM создает ненужное раздувание и оставляет желать, чтобы был простой и легкий API для этой функции.
Для чего-то кроссплатформенного, есть zenity. Это в основном для Linux, но также есть порты Mac и Windows. Размер Windows-порта zenity превышает 1 МБ, потому что GTK довольно раздутый.