Нужна помощь в написании скрипта? Close

Вы можете задать любой вопрос по программе Autohotkey в нашей группе Вконтакте. Если решение требует более высокой квалификации- можно обратиться непосредственно ко мне.

ВконтактеГруппа Вконтакте Электронная почтаЭлектронная почта Личная страницаСимаков Яков ВК
home icon Все разделы
comunity icon Нужна помощь?

MsgBox -Autohotkey

Отображает на экране диалоговое окно с кнопками (например: да/нет)

MsgBox, Text MsgBox [, Options, Title, Text, Timeout]

Параметры

Text Если все параметры опущены, MsgBox отображает текст "Нажмите ОК для продолжения".
В противном случае, этот параметр отвечает за текст, который будет отображаться в диалоговом окне.
Можно использовать также управляющие последовательности, такие как `n -перевод строки, `t -табуляция и т.д.
Если текст длинный его рекомендуется разбить на несколько строк для улучшения читаемости.
Options Устанавливает тип окна (обычное, информационное, ошибка, предупреждение), а также комбинации кнопок. Если опущен, то по умолчанию принимает значение 0 (обычное окно с кнопкой Ок)
Может содержать только конкретное значение, а не ссылку %%! В противном случае не будет опознан.
Title Заголовок окна сообщение. По умолчанию содержит имя скрипта без пути, например script.ahk
Timeout (необязательный параметр)
Задает время в секундах, до автоматического закрытия диалогового окна. После истечения времени окно будет закрыто, а IfMsgBox примет значение TIMEOUT.
Может быть дробным числом, не превышающим 2147483 (24,8 дней).
Известный ограничение: Если MsgBox содержит только кнопку OK, IfMsgBox будут думать, что кнопка ОК была нажата, если во время выполнения MsgBox выполняется другой поток.

Опции (Options)

Можно использовать одновременно несколько опций, для этого их значение нужно сложить,
Например: Нам нужны кнопки Abort/Retry/Ignore и информационное окно, тогда складываем 2+64, параметр Options в этом случае должен содержать 66 !

Функция Числовое значение HEX значение
ОК (по умолчанию) 0 0x0
Ок/Отмена 1 0x1
Прервать/Повторить/Пропустить 2 0x2
Да/Нет/Отмена 3 0x3
Да/Нет 4 0x4
Повторить/Отмена 5 0x5
Отмена/Повторить/Продолжить (2000/xp+) 6 0x6
Добавить кнопку помощь (см. дополнение) 16384 0x4000
Тип окна: Ошибка 16 0x10
Тип окна: Вопрос 32 0x20
Тип окна: Предупреждение 48 0x30
Тип окна: Информация 64 0x40
Выделить 2 кнопку 256 0x100
Выделить 3 кнопку 512 0x200
Поверх других окон 4096 0x1000
Модальное окно процесса 8192 0x2000
Показать на мониторе по умолчанию 131072 0x20000
Поверх других окон
Но без значка в заголовке окна!
262144 0x40000
Выравнивание текста по правому краю 524288 0x80000
Перевернуть текст справа на лево 1048576 0x100000

Дополнение

Можно также складывать и HEX значения, например чтобы использовать одновременно 0x4 и 0x20 нужно записать их как 0x24

В тексте MsgBox необязательно экранировать запятые.

Для определения кнопки, выбраной пользователем используется команда IfMsgBox:

MsgBox, 4, Выбор, Вы хотите продолжить? (Нажмите Да или Нет) IfMsgBox Yes MsgBox Вы нажали Да. else MsgBox Вы нажали Нет

Можно использовать следующие названия кнопок: Yes, No, OK, Cancel, Abort, Ignore, Retry, Continue, TryAgain, Timeout.


Совет: нажатие Ctrl+C во время показа MsgBox копирует его текст в буфер обмена. Это относится ко всем диалоговым окнам, в том числе не созданых Autohotkey.

Использование MsgBox с GUI окнами: окно GUI может отображать MsgBox с помощью Gui, +OwnDialogs. В этом случае взаимодействие с GUI будет невозможно, пока пользователь не отреагирует на диалоговое окно.

Кнопка справки: Когда включена в параметр Options не будет иметь эффекта если:

  1. Окно принадлежит одному из GUI
  2. Когда показывается справочное сообщение при помощи OnMessage (0x53, "WM_HELP")

Кнопка закрыть: Если окно имеет только один вариант выбора (ОК), кнопка X будет работать идентично кнопке ОК.
Если окно имеет вид Да/Нет, то кнопка X будет соответствовать отрицательному выбору.

Пример

MsgBox Это первый метод вызова MsgBox, запятые не нужно экранировать MsgBox, 4, , Это вариант с полным использованием параметров, запятые тоже не нуждаются в экранировании MsgBox, 4, , Хотите продолжить? IfMsgBox No return MsgBox, 4, , Этот пример с использованием таймаута 5 секунд. Продолжить?, 5 IfMsgBox Timeout MsgBox Вы не отреагировали в течении 5 секунд else IfMsgBox No return
Автор перевода: Humphrey
Настоящее имя переводчика: Симаков Яков
Под редакцией ahk-wiki.ru от 21.08.19