Запомните: Директивы ставятся только в начале скрипта!
#AllowSameLineComments - Только для скриптов AutoIt v2 (.aut): позволяет комментарию находиться на одной строке с командой.
Указав эту директиву вверху любого скрипта AutoIt v2 (.aut), вы получаете возможность писать комментарии в одной строке с командами, что обычно отключено из соображений совместимости. Если директива стоит не на самом верху скрипта, то в коде выше неё такие комментарии использовать нельзя.
#ClipboardTimeout - Устанавливает время, в течение которого скрипт пытается получить доступ к буферу обмена, в случае если первая попытка не удалась.
Некоторые приложения в течение долгого времени держат буфер обмена в открытом состоянии, возможно для того, чтобы использовать его для записи и последующего считывания большого количества данных. В подобных случаях увеличение значения данной настройки увеличит время, которое скрипт будет выжидать перед тем, как отобразить сообщение об ошибке. Данная настройка применяется для всех операций с буфером обмена.
#CommentFlag - Изменяет символ комментария в скрипте с точки с запятой на другую последовательность символов.
По умолчанию комментарий от кода отделяется точкой с запятой (;). Она указывает на то, что текст, который следует далее, не должен исполняться (при запуске скрипта этот текст не загружается в память, чтобы он не влиял на работу скрипта). Символ комментария, появляющийся на одной с командой строке, не воспринимается как таковой в том случае, если между ним и командой нет по крайней мере одного пробела или знака табуляции.
#ErrorStdOut - Выводит сообщения о синтаксических ошибках, препятствующих запуску скрипта, в стандартный вывод, а не в диалоговое окно.
Эта возможность позволяет продвинутым редакторам, таким как Textpad, Scite, Crimson и EditPlus, переходить к ошибочной строке, когда встречается синтаксическая ошибка. Поскольку эту директиву пришлось бы добавлять в каждый скрипт, обычно лучше настроить ваш редактор на использование ключа командной строки /ErrorStdOut при запуске любого скрипта AutoHotkey. Хотя синтаксические ошибки посылаются в стандартный вывод (stdout), они не появятся прямо в окне командной строки. Вместо этого такой вывод может быть захвачен через конвейеризацию или перенаправление.
#EscapeChar - Меняет экранирующий символ скрипта (например, акцент на обратную наклонную черту).
Экранирующий символ используется, чтобы показать, что символ, идущий сразу за ним, должен интерпретироваться не так, как обычно. Для скриптов AutoIt v2 (.aut) по умолчанию экранирующим символом служит обратная наклонная черта (\). Для файлов всех других расширений, включая скомпилированные скрипты, экранирующий символ по умолчанию - акцент (`). Когда скрипт .aut автоматически конвертируется в .ahk, экранирующая обратная наклонная черта по всему файлу заменяется на знак акцента.
#HotkeyInterval - Наряду с директивой#MaxHotkeysPerIntervalзадает частоту активаций горячей клавиши. При попытке более частого использования горячей клавиши отображается предупреждающий диалог.
Если данная директива не задана, по умолчанию используется величина интервала 2000 миллисекунд.
#HotkeyModifierTimeout - Влияет на поведение модификаторов горячих клавиш: CTRL, ALT, WIN и SHIFT.
Когда выполняется данная команда, то первое, что она делает, это отпускает клавиши Ctrl и Alt, чтобы символы были посланы правильно. После посылки всех нажатий команда не знает, можно ли ей вновь нажать Ctrl и Alt (удерживает ли их всё-ещё пользователь). Но если заданный таймаут не истёк, команда будет считать, что пользователь ещё не успел отпустить модификаторы, и она нажмёт их вновь для соответствия их физическому состоянию. Если таймаут истёк, команда не будет опять нажимать модификаторы, так что пользователь должен будет отпустить и нажать их снова, чтобы модифицировать ими ту же или какую-либо другую клавишу. Величина таймаута должна быть меньше времени, в течение которого пользователь обычно удерживает модификаторы горячей клавиши перед их отпусканием. Иначе нажатое состояние модификаторов может быть восстановлено, когда пользователь их уже отпустил, что приведёт к их залипанию.
#Hotstring - Меняет настройки строк автозамены или их конечные символы.
-NoMouse - Не позволяет щелчкам мыши производить сброс распознавателя автозамен. В качестве побочного эффекта это также устраняет необходимость хука мыши для работы автозамен (хотя он всё-же будет установлен, если требуется для каких-то других целей, например, для горячих клавиш мыши). Влияние #Hotstring NoMouse распространяется на все строки автозамены скрипта, а не только на те, что находятся ниже её.
-EndChars, NewChars - Поставьте один пробел после EndChars и затем укажите новые конечные символы. Поскольку новые конечные символы действительны глобально для всего скрипта - независимо от того, где находится директива, - нет нужды задавать их более одного раза. Максимальное число конечных символов - 100. Символы сверх этого лимита игнорируются. Чтобы сделать табуляцию конечным символом, включите в список `t. Чтобы сделать пробел конечным символом, поставьте его между двумя другими символами в списке (или в начало, если список содержит только один другой символ или не содержит других символов).
-NewOptions - Задайте новые опции. В отличие от EndChars, в данном случае область действия директивы зависит от её места в скрипте. Другими словами, разные секции автозамен могут иметь разные умолчательные настройки.
#IfWin(Active) / (Exist) - Создает контекстно-чувствительные горячие клавишиhotkeysи строки автозаменыhotstrings. Такие горячие клавиши выполняют различные действия (или не делают ничего) в зависимости от окна, которое является активным или существует.
Директивы #IfWin делают легким создание контекстно-чувствительных горячих клавиш hotkeys и строк автозамены hotstrings. Когда #IfWin отключена (или вообще не используется в скрипте), все горячие клавиши и строки автозамены действуют во всех окнах (если они не заблокированы командой Suspend или командой Hotkey).
Если горячая клавиша клавиатуры или мыши заблокирована через #IfWin, то она выполняет свою обычную функцию, то есть направляется активному окну так, как если бы такой горячей клавиши и не было. Здесь есть два исключения: 1) Windows 95/98/Me: нажатие IfWin - заблокированной горячей клавиши не имеет никакого эффекта (даже для её обычной функции); и 2) Горячие клавиши джойстика: хотя #IfWin работает, но не изолируются другие программы от реакции на нажатие кнопки.
#Include / #IncludeAgain - Обозначает место, куда перед выполнением скрипта будет вставлено содержимое указанного файла.
если полный путь не указан, предполагается, что файл находится в стартовом/рабочем каталоге (исключение: ahk2exe предполагает, что файл находится в одном каталоге со скриптом). Путь и имя файла не должны содержать ссылок на переменные (кроме %A_ScriptDir%, %A_AppData% и %A_AppDataCommon%), двойных кавычек или шаблонов. Escape-последовательности, кроме случая точки с запятой (`;), не должны использоваться, но это и не нужно, поскольку такие символы как знак процента интерпретируются как литеральные. Замечание: SetWorkingDir не оказывает влияния на #Include, поскольку #Include обрабатывается до того как скрипт начнёт выполняться.
#InstallKeybdHook - Принуждает скрипт к безусловной установке хука клавиатуры.
Хук клавиатуры отслеживает нажатия клавиш в целях активации строк автозамены и тех горячих клавиш, которые не поддерживаются RegisterHotkey (которая является встроенной функцией операционной системы). Он также поддерживает некоторые другие возможности, такие как команда Input. Хук клавиатуры не поддерживается для Windows 95/98/Me, поскольку эти операционные системы требуют другой тип хука, который должен находиться в файле DLL. AutoHotkey не устанавливает хуки клавиатуры и мыши безусловно, потому что вместе они потребляют по меньшей мере 500 Кб памяти. директива #InstallKeybdHook безусловно устанавливает хук клавиатуры, что может быть полезно, чтобы KeyHistory могла показывать 20 последних нажатий (для целей отладки) или чтобы избежать использования #HotkeyModifierTimeout. Вы можете определить, используется ли скриптом этот хук, через команду KeyHistory или через пункт меню. Вы можете определить, какие горячие клавиши используют хук, через команду ListHotkeys или пункт меню. Эта директива также делает скрипт резидентным, что означает, что для его завершения требуется команда ExitApp.
#InstallMouseHook - Принуждает скрипт к безусловной установке хука мыши.
Хук мыши отслеживает её щелчки в целях активации горячих клавиш мыши и также нужен для реализации некоторых возможностей строк автозамены. Он не поддерживается для Windows 95/98/Me, поскольку эти операционные системы требуют другой тип хука, который должен находиться в файле DLL. AutoHotkey не устанавливает хуки клавиатуры и мыши безусловно, потому что вместе они потребляют по меньшей мере 500 Кб памяти (но если один из хуков уже установлен, установка другого потребует уже только около 50 Кб добавочной памяти). Вследствие этого хук мыши обычно устанавливается, только если скрипт содержит горячие клавиши мыши. Он также устанавливается для строк автозамены, но это может быть отменено через #Hotstring NoMouse. Напротив, директива #InstallMouseHook безусловно устанавливает хук мыши, что может быть полезно, чтобы KeyHistory могла отслеживать щелчки мыши. Вы можете определить, используется ли скриптом этот хук, через команду KeyHistory или через пункт меню. Вы можете определить, какие горячие клавиши используют хук, через команду ListHotkeys или пункт меню. Эта директива также делает скрипт резидентным, что означает, что для его завершения требуется команда ExitApp.
#KeyHistory - Устанавливает максимальное количество событий клавиатуры и мыши, отображаемое окном KeyHistory. Чтобы заблокировать key history, задайте значение 0.
Так как данная настройка вступает в действие перед началом работы скрипта, необходимо задать ее только один раз (в любом месте скрипта). Поскольку каждое нажатие клавиши и каждый щелчок мыши состоит из события "нажать" и события "отпустить", KeyHistory отображает в два раза меньше "завершенных событий", чем задано в качестве значения. Например, если в скрипте определено "#KeyHistory 50", будет отображено до 25 нажатий клавиш и щелчков мыши включительно. Максимальное количество событий клавиатуры и мыши, отображаемое окном KeyHistory (по умолчанию 40, максимум 500). Задайте значение 0, для того чтобы полностью заблокировать key history.
#MaxHotkeysPerInterval - Наряду с директивой#HotkeyIntervalзадает частоту активаций горячей клавиши. При попытке более частого использования горячей клавиши отображается предупреждающий диалог.
Задавая данное значение, необходимо быть внимательным, поскольку если неосторожно задать бесконечный цикл нажатий клавиш (при помощи команды Send, которая случайно запустит другие клавиши), ваш компьютер может зависнуть из-за потока быстро сменяющих друг друга нажатий горячих клавиш. Проще говоря, горячая клавиша ^c::Send ^c вызовет бесконечный цикл нажатий клавиш. Чтобы этого избежать, к определению горячей клавиши добавьте префикс $, который помешает команде Send запускать горячую клавишу. Если директива в скрипте не задана, по умолчанию количество горячих клавиш равно 70.
#MaxMem - Ограничивает максимальный размер каждой переменной указанным числом мегабайт.
Допустимое количество мегабайт на каждую переменную. Значения, превышающие 4095, считаются равными 4095. Значения меньше 1 считаются равными 1. Если этой директивы в скрипте нет, считается, что Megabytes имеет значение 64. Ограничение ёмкости переменных имеет целью помешать скрипту, содержащему ошибки, потребить всю доступную память в системе. Повышение или снижение этого лимита не влияет на производительность скрипта и не изменяет количество фактически используемой им памяти (кроме случаев WinGetText и ControlGetText, которые при увеличении MaxMem смогут считывать больше текста). Эта настройка глобальна, т.е. её достаточно указать один раз в любом месте скрипта и она будет действовать на весь скрипт. Эта настройка ограничивает только размер памяти, выделяемой для переменной автоматически. Она не влияет на работу команды VarSetCapacity.
#MaxThreads - Задаёт максимальное число одновременных потоков.
Эта настройка глобальна, т.е. её достаточно указать только один раз (в любом месте скрипта), чтобы она влияла на весь скрипт. Хотя значение 1 допустимо, оно не рекомендуется, так как это не позволит горячим клавишам срабатывать в то время, когда скрипт показывает на экране окно MsgBox или другой диалог. Это также не позволит запускаться таймерам, когда другой поток выполняет команду Sleep или команду, которая чего-либо ждёт. Любая процедура, которая содержит в первой строке ExitApp, Pause, Edit, Reload, KeyHistory, ListLines, ListVars или ListHotkeys сможет запуститься независимо от данной настройки. Если значение этой настройки меньше, чем у #MaxThreadsPerHotkey, она имеет преобладание над последней. Если данная директива в скрипте отсутствует, используется её значение по умолчанию 10.
#MaxThreadsBuffer - Заставляет некоторые или все горячие клавиши буферизовать, а не игнорировать свои нажатия, когда достигнут лимит по количеству потоков.
Это редко используемая директива, потому что от данного типа буферизации, который по умолчанию отключен, обычно больше вреда, чем пользы. Например, если вы случайно нажмёте горячую клавишу дважды, то при включенной буферизации это приведёт к автоматическому запуску её процедуры во второй раз, если выполнение первого потока займёт менее 1 секунды (этот тип буфера существует только 1 секунду). Обратите внимание, что AutoHotkey имеет несколько других способов буферизации горячих клавиш (таких как "Thread Interrupt" и "Critical"). Эта директива полезна главным образом для улучшения реакции горячих клавиш на автоповтор клавиатуры. Например, если вы удерживаете нажатой горячую клавишу, которая имеет настройку #MaxThreadsPerHotkey 1 (значение по умолчанию), поступающие с клавиатуры нажатия игнорируются, если процедура этой горячей клавиши уже выполняется. Таким образом, когда процедура завершится, она не запустится снова пока не поступит следующее нажатие, что может занять 50 миллисекунд или больше, смотря по тому, в каком месте цикла автоповтора завершилась процедура. Этой задержки и помогает избежать данная директива. Поскольку это директива, а не команда, нет необходимости помещать её внутрь процедуры. Вместо этого располагайте её в скрипте непосредственно перед первой из тех горячих клавиш, на которые она должна действовать. Off: Это значение по умолчанию. Нажатия горячей клавиши будут игнорироваться, если уже запущено максимально разрешённое для неё количество потоков (обычно 1, но это может быть изменено через #MaxThreadsPerHotkey). On: Все процедуры горячих клавиш между этим местом и следующей директивой #MaxThreadsBuffer Off будут буферизовать, а не игнорировать нажатия своих клавиш в случае, если количество их потоков достигнет лимита, устанавливаемого через #MaxThreadsPerHotkey.
#MaxThreadsPerHotkey - Устанавливает максимальное количество одновременно запущенных потоков для каждой комбинации горячих клавиш.
Эта директива используется для контроля количества одновременно выполняемых процессов, вызванных запуском комбинации горячих клавиш. Например, если горячим клавишам указано максимальное количество процессов, равное 1, то повторные нажатия данных клавиш до истечения выполнения первого задания будут игнорироваться. Такой механизм также позволяет застраховаться от случайных двойных нажатий горячих клавиш. Однако, если вы хотите, чтобы ваши повторные нажатия горячих клавиш не игнорировались, а буферизовались - в том числе и для того, чтобы увеличить отзывчивость клавиатуры на повторные нажатия - используйте директиву #MaxThreadsBuffer. В отличие от #MaxThreads, эта директива не является глобальной. Записав директиву непосредственно перед нашими целевыми горячими клавишами, мы добиваемся нужного нам эффекта. Также наша директива оказывает влияние и на все последующие (нижележащие) записи горячих клавиш в скрипте, до тех пор, пока не будет прописана эта же директива, но с другим значением. Любая процедура горячих клавиш, начинающаяся с ExitApp, Pause, Edit, Reload, KeyHistory, ListLines, ListVars, или ListHotkeys выполняется всегда независимо от данной установки. Директива #MaxThreads по сравнению с директивой #MaxThreadsPerHotkey имеет приоритет. Поэтому, если в скрипте присутствует директива #MaxThreads, и её значение меньше, чем значение #MaxThreadsPerHotkey, то выполняться будет только она. Если данная директива в скрипте не указана специально, то для горячих клавиш используется значение по умолчанию, равное 1. Максимальное количество потоков, которые могут быть запущены данной комбинацией горячих клавиш (максимум 20).
#NoEnv - Отменяет проверку для пустых переменных, не являются ли они переменными окружения (рекомендуется для всех новых скриптов).
Поместите эту директиву в любом месте скрипта, чтобы избежать проверок пустых переменных на предмет того, не являются ли они переменными окружения. Например: #NoEnv MsgBox %WinDir% В этом коде не будет использоваться переменная окружения WinDir (хотя этого можно добиться, если выше в скрипте написать WinDir := A_WinDir). Применение #NoEnv рекомендуется, потому что: Это значительно улучшает производительность везде, где в выражениях или командах используются пустые переменные. Это также улучшает производительность DllCall, если для обозначения типов параметров используются слова без кавычек (например, int вместо "int"). Это позволяет избежать ошибок, вызванных случайными совпадениями имён переменных с именами каких-либо переменных окружения. Для облегчения перехода к #NoEnv были добавлены встроенные переменные Comspec и ProgramFiles. Они содержат те же строки, что и соответствующие переменные окружения. Когда действует #NoEnv, в скрипте нужно использовать команду EnvGet, чтобы получить значения переменных окружения, или использовать встроенные переменные вроде A_WinDir.
#NoTrayIcon - Не показывает значок скрипта в трее.
Если поставить эту директиву в любом месте скрипта, то при его запуске не будет появляться значок в трее (даже если скрипт скомпилирован в EXE). Если вы сделаете это для скрипта, в котором есть горячие клавиши, вы, возможно, захотите назначить горячую клавишу для команды ExitApp. Иначе у вас не будет простого способа выйти из скрипта (без перезагрузки компьютера или принудительного завершения процесса). Например: #x::ExitApp Значок в трее можно спрятать или вновь показать в любой момент работы скрипта через команду Menu, Tray, Icon или Menu, Tray, NoIcon. Единственный недостаток использования команды Menu, Tray, NoIcon в самом начале скрипта состоит в том, что при запуске скрипта значок всё-же показывается на короткое время. Чтобы избежать этого, используйте #NoTrayIcon. Встроенная переменная A_IconHidden содержит 1, если значок в данный момент скрыт, и 0, если нет.
#Persistent - Делает скрипт постоянно выполняющимся (т.е. до тех пор, пока пользователь не закроет его или пока не встретится команда ExitApp).
Если эта директива присутствует в любом месте скрипта, он не закроется после того, как будет выполнена его секция автовыполнения (верхняя часть скрипта). Это полезно в тех случаях, когда скрипт содержит таймеры и/или пользовательские меню, но не имеет горячих клавиш, строк автозамены и не использует OnMessage() или Gui. Добавляя эту директиву к уже существующему скрипту, вы, возможно, захотите заменить некоторые или все команды Exit на ExitApp. Причина в том, что Exit не может завершить постоянно выполняющийся скрипт, она завершает только текущий поток. С версии 1.0.16 эта директива также делает скрипт одиночным, т.е. запрещает его запуск в нескольких экземплярах одновременно. Чтобы изменить это, используйте #SingleInstance.
#SingleInstance - Определяет, разрешено ли скрипту запускаться снова, если он уже выполняется.
Если скрипт содержит горячие клавиши, строки автозамены, #Persistent, OnMessage() или Gui, он является одиночным по умолчанию. Это может быть изменено. force|ignore|off: Этот параметр определяет, что произойдёт при попытке запустить скрипт, когда один его экземпляр уже запущен и выполняется. Force означает, что старый экземпляр скрипта будет замещён новым автоматически, без вывода диалогового окна. Это эквивалентно действию команды Reload. Ignore означает, что будет сохранён старый экземпляр. Другими словами, попытки запустить скрипт снова игнорируются. Диалоговое окно также не выводится. Off разрешает запуск скрипта в нескольких экземплярах одновременно. Если параметр опущен, будет выводиться окно с запросом, сохранить ли прежний экземпляр или заместить его новым.
#UseHook (on/off) - Заставляет скрипт использовать хук для реализации всех или некоторых горячих клавиш.
On|Off Если параметр не задан, #UseHook действует так же, как #UseHook On. On: Хук клавиатуры будет использован для реализации всех горячих клавиш ниже вплоть до следующей директивы #UseHook Off (если она есть). Off: Горячие клавиши будут реализованы с использованием метода по умолчанию (через функцию RegisterHotkey(), если это возможно; если нет, то с использованием хука клавиатуры). Как правило, горячие клавиши реализуются с использованием функции Windows API RegisterHotkey() везде, где это возможно. Однако при некоторых условиях отзывчивость (responsiveness) горячих клавиш может быть улучшена, если использовать вместо этого клавиатурный хук. Применение этой директивы эквивалентно использованию префикса $ в определении каждой горячей клавиши. Исключением являются Windows 95/98/Me, в которых #UseHook игнорируется (хотя префикс $ работает в ограниченном варианте). Как и все директивы, #UseHook обрабатывается только однажды при запуске скрипта, поэтому место для неё в скрипте выбирается не так, как для команд (т.е. нет необходимости помещать её внутрь процедуры). Вместо этого поместите её непосредственно перед первой из горячих клавиш, на которые должно распространяться её действие. Горячие клавиши, использующие хук клавиатуры, не могут запускаться командой Send. Точно так же горячие клавиши мыши не могут запускаться командой Click, поскольку все они используют хук мыши. Чтобы обойти это, используйте Gosub, чтобы перейти к горячей клавише как к обычной метке. Например: Gosub #LButton. Если данной директивы в скрипте нет, это равносильно её применению с параметром Off.
#WinActivateForce - Пропустить более мягкий метод активации окна и использовать сразу принудительный.
Наличие этой директивы в любом месте скрипта заставляет команды активации окон - такие как WinActivate, WinActivateBottom и GroupActivate - использовать сразу более жёсткие методы активации, пропуская более мягкий. Хотя эта директива обычно не влияет на быстроту или надёжность активации окна, она может предотвратить мигание оконных кнопок на Панели задач, когда разные окна активируются быстро одно за другим. В Windows 95 и NT эта настройка, вероятно, никогда не потребуется, так как в них слабее контроль за активацией окон.
Спасибо за просмотр! Здесь собраны все директивы которые существуют на данный момент! Тема будет обновляться примерами скриптов.
Дата: Воскресенье, 21.07.2013, 05:59 | Сообщение # 4
Боец
Сообщений: 111
Статус: Offline
Sergo_bro2, [CM]Valenok, спасибо. FULL UPDATE.Добавил директивы. В этом материале собраны все директивы на данный момент. Мои Темы _______________________________________________________ http://cheat-master.ru/forum/150-110586-1 Cамооборона [AHK] http://cheat-master.ru/forum/150-88009-1 Прокачка TAXI [AHK] http://cheat-master.ru/forum/150-87356-1 Детектив [AHK] https://cheat-master.ru/forum/149-144320-1 [Урок]Директивы [AHK] _______________________________________________________
http://cheat-master.ru/forum/50-28907-1 Скрипты На Заказ [AHK]