Как сделать окно в ahk

Обновлено: 16.05.2024

Здравия желаю, молодые (и, может быть, не очень). Сегодня будем учиться писать на GUI всякое-разное-прекрасное. Для начала, немного вводной информации, т.к без понимания что вы пишите - вы никогда не научитесь качественно быдло-кодить (да, именно быдло-кодить, мы же илита).

. ДИСКЛЕЙМЕР, ВАШУЖ КАЧЕРЫЖКУ.
В этой теме я не буду упомянать про то, как создать само окно GUI и прочее ВООБЩЕ. Этого достаточно и в интернете, так же была создана тема и до меня. К тому же, интерфейс GUI хоть и выглядит не прям очень красиво, но понятен для любого начинающего.

1] Button - Она же кнопка. Сохраняет ваши edit, hotkey (о них позже); Выходит из окна GUI, при этом не закрывая сам скрипт; Так же может обрубать скрипт полностью;

2] Text - обычная рамка, размеры которой вы можете подстроить под себя используя Smart Gui, либо же, зная как работать с координатами - напрямую исправляя значение, как вам нужно. В эту рамку можно вписать текст, который вам необходим. У текста имеются шрифты, регулировка размера и доп.функции (подробнее далее, так же будут приведён для каждой функции код).

3] Edit - записывает любой текст в переменную. Её можно ввести и вывести, естественно.

4] Tab - создаёт некую "книгу" со своими "страницами", если очень простым языком. Тут вы можете создать несколько страниц, после чего в каждой странице записать всякое-разное.

5] Hotkey - тот же edit, только записывает не буковки и цифорки, а сочитание клавиш. Но, буквы там всё-таки можно использовать в качестве клавиши, которой в дальнейшем мы будет давать действие.

6] Picture - простая картинка. Используется для фонового изображения, обычно. Но можно сделать так, что при нажатии на картинку будет происходить какое-либо действие, хоть это и бесполезно, как по мне.

7] UpDown - это ваша полосочка в браузере справа, сбоку. Работает по тому же принципу. Если вам нужно впихнуть в 1 GUI окно очень много функций, но растягивать его не хочется (невозможно) - вам к ней.

Это все функции, которые вам могут понадобиться при написании окна GUI для SAMP. Напомню, я не делаю полноценный урок по GUI, а только помогаю в освоении его для нашей любимой (нет) игры. Далее я буду разбирать каждую функцию, приводя пример с кодом. В конце мы сделаем полноценный код от начала и до конца.

1] Создадим окно GUI с имением там пары кнопок: (ниже)
2] Тут мы можем наблюдать 3 кнопки (но значений, заданных для кнопки может быть гораздо больше). Перед координатами GUI сам указал, что это кнопка ( Button ). Название их указывается в самом конце строки. Если при создании окна GUI в Smart GUI вы не указали своё название кнопке, то система укажет дефолтное значение, то бишь Button .
Для того, чтобы кнопка начала функционировать, нужно задать ей значение и дать название метке. При нажатии на кнопку скрипт будет прыгать на метку и будет выполнять то, что мы ему напишем.

3] Вот мы дали значение кнопке ( g ) и назвали метку (название метки идёт после " g ". Пример: gSave ). Назвать метку вы можете хоть "Сохранить", но при этом она будет попросту закрывать скрипт. Чтобы указать, куда должен прыгать скрипт, надо написать название метки и поставить двоеточие. Пример " Save :". Далее мы рассмотрим функционал каждой (почти) кнопки по подробнее

7] Простой вызов MsgBox при помощи button :

Надеюсь, про button я ничего не забыл. Идём дальше..

1] Тема лёгкая, вроде. Ну, как говорил мой отец, либо учимся, либо бухаем. Но перед этим я упомяну, что когда мы записываем Edit или же Hotkey , то нужно использовать v (Var) . При использовании button юзать надо g

2] Создадим окно GUI c 1 edit и парой button :


3] Теперь зададим каждой button действие, а для edit создадим переменную. Так же в начале скрипта будем читать этот edit

Замечательно, у нас всё сохраняется и всё выводится. Просто прелестно. С edit , по идее, усё.

1] Ну, самая сложная тема из всего урока, наверно. Мой батя держит за вас кулачки, полетели.

2] Создадим ещё раз окно GUI с hotkey и 3 button .


4] Как видите, после перезапуска скрипта в hotkey сохранились наши клавиши, но нам нужно ещё включить hotkey , а так же задать ему действие.

5] По подробнее про строчку:
Hotkey, % Key6, Действие6, on UseErrorLevel
Здесь всё просто. Пишите Hotkey, % Переменная, Метка, on UseErrorLevel (т.е мы включили такой-то hotkey с такой-то переменной, у которого метка названа так-то так-то)


1] Вот и добрались мы до создания своего скрипта (в данном случае: биндера) с 0.
2] Создаём GUI с дохерищей hotkey и edit , а так же 3 кнопки:


3] В начале скрипта читаем все edit и hotkey , а так же даём задачу button ( Save - будет сохранять; Help - выводить инфу; Cancel - как всегда, тупо закрывает окно (код кину спойлером, т.к он большой)):

IniRead, Bind1, setting.ini, CommandHot, Bind1
IniRead, Bind2, setting.ini, CommandHot, Bind2
IniRead, Bind3, setting.ini, CommandHot, Bind3
IniRead, Bind4, setting.ini, CommandHot, Bind4
IniRead, Bind5, setting.ini, CommandHot, Bind5
IniRead, Bind6, setting.ini, CommandHot, Bind6
IniRead, Bind7, setting.ini, CommandHot, Bind7
IniRead, Bind8, setting.ini, CommandHot, Bind8
IniRead, Bind9, setting.ini, CommandHot, Bind9
IniRead, Bind10, setting.ini, CommandHot, Bind10

IniRead, Button1, setting.ini, ButtonHot, Button1
IniRead, Button2, setting.ini, ButtonHot, Button2
IniRead, Button3, setting.ini, ButtonHot, Button3
IniRead, Button4, setting.ini, ButtonHot, Button4
IniRead, Button5, setting.ini, ButtonHot, Button5
IniRead, Button6, setting.ini, ButtonHot, Button6
IniRead, Button7, setting.ini, ButtonHot, Button7
IniRead, Button8, setting.ini, ButtonHot, Button8
IniRead, Button9, setting.ini, ButtonHot, Button9
IniRead, Button10, setting.ini, ButtonHot, Button10

Hotkey, % Button1, Кнопка1, on UseErrorLevel
Hotkey, % Button2, Кнопка2, on UseErrorLevel
Hotkey, % Button3, Кнопка3, on UseErrorLevel
Hotkey, % Button4, Кнопка4, on UseErrorLevel
Hotkey, % Button5, Кнопка5, on UseErrorLevel
Hotkey, % Button6, Кнопка6, on UseErrorLevel
Hotkey, % Button7, Кнопка7, on UseErrorLevel
Hotkey, % Button8, Кнопка8, on UseErrorLevel
Hotkey, % Button9, Кнопка9, on UseErrorLevel
Hotkey, % Button10, Кнопка10, on UseErrorLevel

Gui, Add, Hotkey, x22 y40 w100 h30 vButton1, %Button1%
Gui, Add, Hotkey, x22 y90 w100 h30 vButton2, %Button2%
Gui, Add, Hotkey, x22 y140 w100 h30 vButton3, %Button3%
Gui, Add, Hotkey, x22 y190 w100 h30 vButton4, %Button4%
Gui, Add, Hotkey, x22 y240 w100 h30 vButton5, %Button5%
Gui, Add, Hotkey, x342 y40 w100 h30 vButton6, %Button6%
Gui, Add, Hotkey, x342 y90 w100 h30 vButton7, %Button7%
Gui, Add, Hotkey, x342 y140 w100 h30 vButton8, %Button8%
Gui, Add, Hotkey, x342 y190 w100 h30 vButton9, %Button9%
Gui, Add, Hotkey, x342 y240 w100 h30 vButton10, %Button10%
Gui, Add, Edit, x142 y40 w160 h30 vBind1, %Bind1%
Gui, Add, Edit, x142 y90 w160 h30 vBind2, %Bind2%
Gui, Add, Edit, x142 y140 w160 h30 vBind3, %Bind3%
Gui, Add, Edit, x142 y190 w160 h30 vBind4, %Bind4%
Gui, Add, Edit, x142 y240 w160 h30 vBind5, %Bind5%
Gui, Add, Edit, x462 y40 w160 h30 vBind6, %Bind6%
Gui, Add, Edit, x462 y90 w160 h30 vBind7, %Bind7%
Gui, Add, Edit, x462 y140 w160 h30 vBind8, %Bind8%
Gui, Add, Edit, x462 y190 w160 h30 vBind9, %Bind9%
Gui, Add, Edit, x462 y240 w160 h30 vBind10, %Bind10%
Gui, Add, Button, x62 y310 w120 h40 gSave, Сохранить
Gui, Add, Button, x275 y310 w120 h40 gHelp, Информация
Gui, Add, Button, x492 y310 w120 h40 gCancel, Закрыть
Gui, Show, w658 h378, GUI Helper | Bikers
return


Help:
MsgBox, 64, Info, В маленьком окошке вводи сочитание клавиш.`nВ длинном окошке вводи команду, к примеру команда /heal.`nПосле нажми "Сохранить".
>
return


Save:
MsgBox, 64, Info, Новое значение успешно сохранено, 3
Gui Submit, NoHide

IniWrite, %Bind1%, setting.ini, CommandHot, Bind1
IniWrite, %Bind2%, setting.ini, CommandHot, Bind2
IniWrite, %Bind3%, setting.ini, CommandHot, Bind3
IniWrite, %Bind4%, setting.ini, CommandHot, Bind4
IniWrite, %Bind5%, setting.ini, CommandHot, Bind5
IniWrite, %Bind6%, setting.ini, CommandHot, Bind6
IniWrite, %Bind7%, setting.ini, CommandHot, Bind7
IniWrite, %Bind8%, setting.ini, CommandHot, Bind8
IniWrite, %Bind9%, setting.ini, CommandHot, Bind9
IniWrite, %Bind10%, setting.ini, CommandHot, Bind10

IniWrite, %Button1%, setting.ini, ButtonHot, Button1
IniWrite, %Button2%, setting.ini, ButtonHot, Button2
IniWrite, %Button3%, setting.ini, ButtonHot, Button3
IniWrite, %Button4%, setting.ini, ButtonHot, Button4
IniWrite, %Button5%, setting.ini, ButtonHot, Button5
IniWrite, %Button6%, setting.ini, ButtonHot, Button6
IniWrite, %Button7%, setting.ini, ButtonHot, Button7
IniWrite, %Button8%, setting.ini, ButtonHot, Button8
IniWrite, %Button9%, setting.ini, ButtonHot, Button9
IniWrite, %Button10%, setting.ini, ButtonHot, Button10

Hotkey, % Button1, Кнопка1, on UseErrorLevel
Hotkey, % Button2, Кнопка2, on UseErrorLevel
Hotkey, % Button3, Кнопка3, on UseErrorLevel
Hotkey, % Button4, Кнопка4, on UseErrorLevel
Hotkey, % Button5, Кнопка5, on UseErrorLevel
Hotkey, % Button6, Кнопка6, on UseErrorLevel
Hotkey, % Button7, Кнопка7, on UseErrorLevel
Hotkey, % Button8, Кнопка8, on UseErrorLevel
Hotkey, % Button9, Кнопка9, on UseErrorLevel
Hotkey, % Button10, Кнопка10, on UseErrorLevel
>
return

Кнопка1:
MsgBox, 64, info, % "Ваше значение edit: " Bind1
>
return

Кнопка2:
MsgBox, 64, info, % "Ваше значение edit: " Bind2
>
return

Кнопка3:
MsgBox, 64, info, % "Ваше значение edit: " Bind3
>
return

Кнопка4:
MsgBox, 64, info, % "Ваше значение edit: " Bind4
>
return

Кнопка5:
MsgBox, 64, info, % "Ваше значение edit: " Bind5
>
return

Кнопка6:
MsgBox, 64, info, % "Ваше значение edit: " Bind6
>
return

Кнопка7:
MsgBox, 64, info, % "Ваше значение edit: " Bind7
>
return

Кнопка8:
MsgBox, 64, info, % "Ваше значение edit: " Bind8
>
return

Кнопка9:
MsgBox, 64, info, % "Ваше значение edit: " Bind9
>
return

Кнопка10:
MsgBox, 64, info, % "Ваше значение edit: " Bind10
>
return

  • v (Var) - переменная/сохранение значения ; g - кнопка, метка, как хотите
  • edit и hotkey записывается v ; все кнопки записываются g
  • Правильно переменную edit или hotkey нужно так: vНазвание , %Название%
  • Строчка Gui Submit сохраняет всё, что ниже неё (но для этого надо указать, куда и что мы сохраняем). Но у вас будет закрываться окно GUI . Дабы этого избежать, нужно добавить NoHide . В готовом варианте это выглядит так:
  • Gui Submit , NoHide.

Отдельное спасибо модератору Юрию , т.к именно с его помощью я написал свой скрипт с GUI и именно на основе этого скрипта я писал данную тему. Баю-бай, кисы

p.s ах да, я хотел ещё про текст сказать. Короче. Есть там доп.функции, по типу: Bold (толстый), italic (наклонный) и прочее. В Smart GUI там всё есть, разберётесь(

AlwaysOnTop, [On|Off|Toggle]: заставляет окно находиться поверх всех других окон. Значение On включает эту настройку, Off - выключает, Toggle - переключает в противоположное состояние. Вместо AlwaysOnTop можно использовать слово Topmost.

Bottom: помещает окно ниже всех других в последовательности. Эффект тот же, что при нажатии Alt-Escape. Например: WinSet, Bottom,, WinTitle

Top [v1.0.36.01+]: помещает окно на верх последовательности, не активируя его. Однако в большинстве случаев умолчательные настройки системы, вероятно, приведут к активации окна. Вдобавок, эта команда может оказаться неэффективной по причине защиты со стороны операционной системы против приложений, пытающихся "украсть" фокус ввода у приложения, с которым работает пользователь (это может зависеть от того, какого типа окно активно в данный момент и что именно делает пользователь). Один из возможных обходных путей - включить ненадолго для окна режим AlwaysOnTop, затем выключить его.

Disable или Enable: блокирует или разблокирует окно. Когда окно блокировано, пользователь не может перемещать его или взаимодействовать с его элементами управления. Вдобавок, блокированные окна не показываются в списке, выводимом по нажатию Alt-Tab.

Redraw: пытается обновить вид и содержимое окна, информируя операционную систему, что окно должно быть перерисовано. Если для какого-то окна этот метод не работает, попробуйте команду WinMove. Если это также не подействует, попробуйте следующий пример:

Style,N или ExStyle,N: изменяет стиль или расширенный стиль окна. Действие зависит от значения N. Если оно начинается со знака плюс или минус, стиль (стили) добавляются или удаляются. Если оно начинается со знака ^, каждый из указанных далее в N стилей переключается в противоположное состояние. Если N начинается с цифры, стиль окна заменяется на указанный в N.

Переменная ErrorLevel будет содержать 1, если указанное окно не найдено или если стиль не может быть применён.

Некоторые изменения стилей требуют перерисовки окна с помощью команды WinSet Redraw (см. ниже). Некоторые номера стилей можно посмотреть в статье "Стили, используемые командами Gui и GuiControl" ("Styles Usable by the Gui and GuiControl Commands"). Примеры:

WinSet, Style, -0xC00000, A ; Удаляет полосу заголовка у активного окна (WS_CAPTION). WinSet, ExStyle, ^0x80, WinTitle ; Переключает атрибут WS_EX_TOOLWINDOW, что проявляется ; в удалении окна из списка, выводимого по Alt-Tab, или возвращении его в этот список.

WinSet, Region [, Options, WinTitle, . ]

Задаёт форму видимой области окна (прямоугольник, эллипс, многоугольник). Если параметр Options пустой, окно возвращается к его оригинальному/умолчательному виду. Иначе параметр может быть задан одним или более из указанных ниже значений, отделяемых друг от друга пробелами:

  • Wn: ширина прямоугольника или эллипса. Например, w200
  • Hn: высота прямоугольника или эллипса. Например, h300
  • X-Y: каждая из таких пар обозначает координаты. Например, 200-0 означает 200 для координаты Х и 0 для координаты Y.
  • E: задаёт эллиптическую форму. Эта опция действительна, только если заданы W и H.
  • R[w-h]: задаёт форму прямоугольника со скруглёнными углами. Например, при R30-30 для каждого угла будет использован эллипс 30x30. Если w-h отсутствует, используется 30-30. R действительно, только если заданы W и H.

Прямоугольник или эллипс. Если W и H заданы, а Е отсутствует, формой будет прямоугольник. Положение его верхнего левого угла определяется первой (и единственной) парой координат X-Y. Если Е также присутствует, формой будет эллипс. Например: WinSet, Region, 50-0 W200 H250 E, WinTitle

Многоугольник. Если W и H не указаны, то каждая из пар X-Y задаёт координаты одной из вершин многоугольника (относительно левого верхнего угла окна). Например, если заданы три пары координат, то в большинстве случаев получается треугольник. Порядок указания координатных пар может иногда иметь значение. Кроме того, слово Wind в параметре Options задаёт обходящий метод вместо чередующего для построения многоугольника (the winding method instead of the alternating method).

ErrorLevel равен 1 при неудаче и 0 в случае успеха. Неудача случается, когда: 1) указанное окно не существует; 2) какие-то из значений в параметре Options недопустимы; 3) задано более чем 2000 координатных пар; 4) заданная форма недопустима или не может быть применена к указанному окну; 5) версия программы старее, чем 1.0.38.02, и при этом координата Х задана со знаком плюс или минус.

Примеры применения этой команды смотрите в конце статьи.

WinSet, Transparent, N, WinTitle

Делает окно полупрозрачным. Степень прозрачности задаётся значениями N от 0 до 255: 0 означает невидимое окно, 255 - полностью видимое. Прозрачность окна может быть полностью отключена, если задать N как слово Off. Это не то же самое, что 255, поскольку также позволяет улучшить производительность системы и уменьшить использование системных ресурсов.

Известные ограничения для Transparent и TransColor:

  • Они не действуют на окно, не имеющее полосы заголовка и не обладающее свойством "поверх всех окон". В случае с окном Gui проблема может быть решена путём удаления заголовка уже после того, как окно сделано прозрачным. В качестве альтернативы, следующие свойства также позволяют получить эффект прозрачности: Gui -Caption +ToolWindow.
  • Установка прозрачности в 255 перед тем, как её отключить, может помочь избежать проблем с перерисовкой окна, таких, как чёрный фон. Если окно всё-таки перерисовывается некорректно, смотрите возможные обходные пути в описании Redraw выше.
  • Чтобы изменить цвет окна, заданный как прозрачный, может понадобиться предварительно отключить прозрачность.

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

Чтобы сделать прозрачным меню кнопки "Пуск", следуйте этому примеру:

DetectHiddenWindows, on WinSet, Transparent, 150, ahk_class BaseBar ; Чтобы все его подменю также были прозрачными, включите также скрипт ниже. ; Прим. переводчика: но у меня Главное меню имеет класс не BaseBar, а DV2ControlHost. ; Кроме того, скрипт ниже не сделал его подменю прозрачными.

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

WinSet, TransColor, Color [N], WinTitle

Делает все пикселы выбранного цвета внутри окна прозрачными, позволяя видеть сквозь окно то, что находится под ним. Щелчки мыши на невидимых пикселах проходят сквозь окно к окну, лежащему ниже. Задайте в Color название цвета или его обозначение в формате RGB (смотрите статью о SplashImage или используйте PixelGetColor в режиме RGB). Чтобы вдобавок сделать видимую часть окна частично прозрачной, добавьте пробел (не запятую) и укажите уровень прозрачности (0-255). Например: WinSet, TransColor, EEAA99 150, WinTitle

TransColor часто используется для создания надписей на экране и других визуальных эффектов. Смотрите пример создания экранной надписи в конце статьи, описывающей команду Gui.

Слово Off может быть указано для полного отключения прозрачности окна. Оба следующих примера действуют идентично:

Известные ограничения: смотрите список выше.

Примечания

Эта команда не меняет значения ErrorLevel за исключением случаев, упомянутых выше.

Считывание текущих параметров прозрачности возможно только в через WinGet.

Окно всплывающего текста (SplashText) скрипта может быть лишено свойства "поверх всех окон" через команду:

Заголовки и текст окон чувствительны к регистру. Скрытые окна не определяются, если только это не задано командой DetectHiddenWindows.

Примеры

Displays the specified text in a small window containing one or more buttons (such as Yes and No).

Parameters

If all the parameters are omitted, the message box will display the text "Press OK to continue.". Otherwise, this parameter is the text displayed inside the message box to instruct the user what to do, or to present information.

Escape sequences can be used to denote special characters. For example, `n indicates a linefeed character, which ends the current line and begins a new one. Thus, using text1`n`ntext2 would create a blank line between text1 and text2.

If Text is long, it can be broken up into several shorter lines by means of a continuation section, which might improve readability and maintainability.

Indicates the type of message box and the possible button combinations. If blank or omitted, it defaults to 0. See the tables below for allowed values.

This parameter must be either a literal number or [in v1.1.06+] a forced expression such as % Options . Any other non-blank value will not be recognized as this parameter, but instead as part of Text in the single-parameter mode.

The title of the message box window. If omitted or blank, it defaults to the name of the script (without path).

(optional) Timeout in seconds, which can contain a decimal point but is not an expression by default. [v1.1.06+] : This can be a forced expression such as % mins*60 .

If this value exceeds 2147483 (24.8 days), it will be set to 2147483. After the timeout has elapsed the message box will be automatically closed and the IfMsgBox command will see the value TIMEOUT.

The following limitation was fixed in [v1.1.30.01] : If the message box contains only an OK button, IfMsgBox will think that the OK button was pressed if the message box times out while its own thread is inactive due to being interrupted by another.

Values for the Options parameter

The Options parameter can be a combination (sum) of values from the following groups.

To indicate the buttons displayed in the message box, add one of the following values:

Function Decimal Value Hex Value
OK (that is, only an OK button is displayed) 0 0x0
OK/Cancel 1 0x1
Abort/Retry/Ignore 2 0x2
Yes/No/Cancel 3 0x3
Yes/No 4 0x4
Retry/Cancel 5 0x5
Cancel/Try Again/Continue 6 0x6

To display an icon in the message box, add one of the following values:

Function Decimal Value Hex Value
Icon Hand (stop/error) 16 0x10
Icon Question 32 0x20
Icon Exclamation 48 0x30
Icon Asterisk (info) 64 0x40

To indicate the default button, add one of the following values:

Function Decimal Value Hex Value
Makes the 2nd button the default 256 0x100
Makes the 3rd button the default 512 0x200
Makes the 4th button the default
(requires the Help button to be present)
768 0x300

To indicate the modality of the dialog box, add one of the following values:

Function Decimal Value Hex Value
System Modal (always on top) 4096 0x1000
Task Modal 8192 0x2000
Always-on-top (style WS_EX_TOPMOST)
(like System Modal but omits title bar icon)
262144 0x40000

To specify other options, add one or more of the following values:

Function Decimal Value Hex Value
Adds a Help button (see remarks below) 16384 0x4000
Make the text right-justified 524288 0x80000
Right-to-left reading order for Hebrew/Arabic 1048576 0x100000

Remarks

A message box usually looks like this:

MsgBox

The tables above are used by adding up the values you wish to be present in the message box. For example, to specify a Yes/No box with the default button being No instead of Yes, the Options value would be 256+4 (260). In hex, it would be 0x100+0x4 (0x104).

MsgBox has smart comma handling, so it is usually not necessary to escape commas in the Text parameter.

To determine which button the user pressed in the most recent message box, use the IfMsgBox command. For example:

The names of the buttons can be customized by following this example.

Tip: Pressing Ctrl + C while a message box is active will copy its text to the clipboard. This applies to all message boxes, not just those produced by AutoHotkey.

Using MsgBox with GUI windows: A GUI window may display a modal message box by means of Gui +OwnDialogs. A modal message box prevents the user from interacting with the GUI window until the message box is dismissed. In such a case, it is not necessary to specify the System Modal or Task Modal options from the table above.

When Gui +OwnDialogs is not in effect, the Task Modal option (8192) can be used to disable all the script's windows until the user dismisses the message box.

The Help button: When the Help button option (16384) is present in Options, pressing the Help button will have no effect unless both of the following are true:

  1. The message box is owned by a GUI window by means of Gui +OwnDialogs.
  2. The script is monitoring the WM_HELP message (0x0053). For example: OnMessage(0x0053, "WM_HELP") . When the WM_HELP() function is called, it may guide the user by means such as showing another window or MsgBox.

The Close button (in the message box's title bar): Since the message box is a built-in feature of the operating system, its X button is enabled only when certain buttons are present. If there is only an OK button, clicking the X button is the same as pressing OK. Otherwise, the X button is disabled unless there is a Cancel button, in which case clicking the X is the same as pressing Cancel.

Related

Examples

The 1-parameter method. A quick and easy way to show information. The user can press an OK button to close the message box and continue execution.

The 3-parameter method. Use the first and second parameter to specify the options and the title.

Use IfMsgBox to determine which button the user pressed in the most recent message box.

The 4-parameter method. Use the fourth parameter (Timeout) to automatically close the message box after a certain number of seconds.

By preceding any parameter with % , it becomes an expression. In the following example, math is performed, a pseudo-array element is accessed, and a function is called. All these items are concatenated via the "." operator to form a single string displayed by MsgBox.

Alerts the user that a message box is going to steal focus (in case the user is typing).

Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно.
Вам необходимо обновить браузер или попробовать использовать другой.

SHARP 1337

Новичок

X98c50e.jpg

ExD0WgV.jpg

Sc4MbaD.jpg

wepuZOa.jpg

Дальше записываем инклуд, который мы используем и текст ( ShowDialog("Номер стиля окна", "Заголовок диалога", "Текст диалога", "Название кнопки") ). Отлично. В конце записываем " Retu rn ".
Вот, что у нас получилось:

Спасибо за то, что уделили мне время, всем удачи :)

sobaka123

Известный

X98c50e.jpg

ExD0WgV.jpg

Sc4MbaD.jpg

wepuZOa.jpg

Итак. Со стилями ознакомились, отлично, идём дальше, к заполнению самого текста в диалоге.
Вот текст, который я использовал для примера:

Дальше записываем инклуд, который мы используем и текст ( ShowDialog("Номер стиля окна", "Заголовок диалога", "Текст диалога", "Название кнопки") ). Отлично. В конце записываем " Retu rn ".
Вот, что у нас получилось:


Всем привет, в предыдущем уроке мы установили АНК, надеюсь вы прочитали данный гайд.
Сегодня мы рассмотрим некоторые основные понятия, и что вообще мы можем уже сделать после установки АНК и среды разработки.

Итак, мы будем работать в среде разработки SciTE4AutoHotkey , которая была разработана именно под наш любимый АНК.

P.S: Я знаю что тут очень много читать, но если вы столкнулись с АНК первый раз, я очень советую вам прочитать всё. Это будет очень полезно для вас. Кто же знаком, спокойно пропускайте, тут изи.

Я не буду разбирать подробно весь интерфейс, а только покажу вам основное.


1 - Run script . Кнопка, которую вы будите использовать чаще всего, компилирует и запускает ваш код\скрипт..как удобней.
2 - GUI Creator . У нас есть возможность просто и быстро создавать ГУИ интерфейсы прямо в нашей среде разработки.
3 - MsgBox creator . Аналогично 2 элементу, только вы можете создавать обычные окна Windows с разными настройками.
4. Строки кода . Обычное дело, каждая строка в коде имеет свой номер, если нажать на номер вы поставите метку на эту строку.

Данный элемент находится внизу редактора после запуска скрипта, это проще говоря отчёт о запуске\работе файла, сейчас он показывает что всё хорошо, если компилятор найдёт ошибку в вашем скрипте, то её будет видно в этом окне. Если у вас нет данного окна , его можно включить во вкладке View > Output.
Хотелось бы мне сказать что для начала вы можете настроить редактор кода под себя. Но было бы там что настраивать. Вы можете установить другую тему для него если стандартная вам не подходит - Tools > SciTE4AutoHotkey settings > Style (в будущем я покажу как устанавливать свои темы, например тёмную).

Мы можем наконец начать что-то писать. Я хотел бы рассказать вам о некоторых терминах в программировании и АНК. Но я сомневаюсь, что на вашем месте я бы это читал в начале. Вообще вам ещё нужно создать сам файл , благо это сделать просто. Просто нажмите ПКМ по любой свободной части рабочего стола - Создать > AutoHotkey script .
А запустить его ПКМ > Edit ( только в случаи если редактор SciTE4 ).

Напишем пока что-то без участи сампа, например по традиции выведем окно с надписью " Hello World! ", как это сделать?
Для этого нам нужно вызвать функцию. Но. что такое функция? Многие из вас не будут знакомы с этим термином. И мне не очень выгодно объяснить его в текстовом виде. Поэтому я рекомендую посмотреть видеоролик .
Надеюсь вам всё понятно, значит, чтобы вызвать окно, нужно вызвать функцию, которая создаёт и вызывает это окно. Название этой функции - MsgBox .
У нас есть функция, которая откроет нам окно, но нам ещё нужно получить там текст. Для этого нам нужно запомнить ещё один термин — параметр .
Почти у каждой функции есть параметры, одни из них обязательны, другие нет. Вы можете вызвать MsgBox и без параметров, вы просто получите окно со стандартным текстом.
Но мы можем записать туда свой , для этого просто напишите нужный вам текст через запятую после функции.

Теперь вы можете запустить этот скрипт и посмотреть что будет, для этого можете нажать на кнопку Run script (1 элемент на картинке выше), или запустить файл который вы создали.
Выходит что наш текст "Hello World!" - это и есть один из параметров , этой функции. В MsgBox ещё есть много параметров, стиль окна, размер окна, кнопки в окне и т.д. но пока это нам не нужно.

Надеюсь вы поняли как работает MsgBox, теперь я расскажу вам про параметры. Если вы используете SciTE4AutoHotkey в качестве редактора, то вам будет с этим легко. При написании какой-то функции АНК редактор даст вам подсказку какие параметры вы можете внести в эту функцию.

Итак, разберём параметры MsgBox.
MsgBox, текст \ MsgBox [, Options, Title, Text, Timeout
Если вы заметили, то функция очень удобная, если мы хотим внести в окно только какой-то текст, то мы в качестве параметра пишем просто текст.

Первый параметр - Options . Этот параметр отвечает за тип окна ( внешний вид ). Вы же знаете что окон Windows большое количество: ошибка , информационно окно , вопрос и т.д к тому же можно настраивать и кнопки на этих окнах. Легче всего вам будет узнать эти типы зайдя в конструктор окон нашего редактора кода, выше на картинке это номер 3.

Как видим мы можем очень удобно сделать нужно вам окно и очень быстро. Видите, я выбрал окно с ошибкой, и внизу получил код нашего окна, тип вышел под число 16 . Вы можете выбрать не только иконку, а также кнопки которые нужны вам на окне. Потом просто скопировать код ниже и вставить в редакторе, а можно сделать ещё проще — нажать на кнопку Insert in SciTE , тогда код этого окна автоматически впишется в редакторе.
Вообще, вы уже можете собрать весь MsgBox в этом конструкторе, но пойдём дальше по параметрам.

Title - тут думаю понятно, это просто заголовок нашего окна.
Text - а это сам текст внутри нашего окна.
Timeout - это тайм-аут, если вы укажите там например 3, то ваше окно будет автоматически закрыто через 3 секунды .
Давайте экспериментировать:
Окно с ошибкой , с заголовком " Window ", с текстом " Hello World! ", закроется через 5 секунд.

Кто-то заметил что-то необычное?
Почему у нас перед запятыми стоит ` ?
В программировании это называется экранирование , обычно это делают бекслешом \ , но не суть.
Вот вы видите, что у нас есть запятая, если бы не было экранирования, то АНК подумал бы что мы перешли на следующий параметр, например

Я хотел показать вам больше стандартных функций, но слишком затянулось и на этой, можете посмотреть ещё одну функцию - InputBox .
Эта функция вызывает окно в которое мы можем что-то ввести. Мы не будем сейчас изучать как получить что-то из этого окна и так далее, узнаем это уже в уроке по переменные.
Вот его структура ( без всех параметров )


Не обращайте внимания на самый первый параметр " var ". Это название переменной, в которой будет текст введённый вам в окно.
Поиграйтесь с этими окнами, задайте вопросы, расскажи впечатления, возможно я что-то забыл. Возможно будет вторая часть тоже по основам, я не хочу делать очень много читанины. ​

Читайте также: