Перейти на главную страничку сайта (список статей, файлы для скачивания)
Проект перевода документации AutoHotkey: перечень переведённых статей и статей в работе.
Оригинал статьи в AutoHotkey.chm: "Variables and Expressions", в содержании - "Variables and Expressions"
Ник переводчика: Gourmet.
Настоящее имя переводчика: Валентина Гаврикова, г.Москва.
Переменными являются участки памяти, где хранятся значения. Значение (или строка, как его иногда называют) может представлять собой любую последовательность символов или цифр. Хотя между текстом и числами не делается никаких различий (и то и другое хранится в виде строк), в некоторых контекстах трактовка строки, полностью состоящей из чисел, отличается от трактовки других строк. Например, если в выражении InputString > BookmarkString обе переменные будут иметь числовые значения, они будут сравниваться как числа. Иначе, сравнение будет производиться в соответствии с алфавитным порядком.
За исключением локальных переменных в функциях, все переменные являются глобальными, то есть во всем скрипте содержимое переменных можно просматривать и изменять с помощью любой подпрограммы. Кроме того, переменные не объявляются явно, а появляются автоматически.
В примере, приведенном ниже, показано, как присвоить переменной значение:
MyVar = 123abc
Чтобы позднее извлечь содержимое этой переменной, сошлитесь на нее, поместив ее имя между знаками процента:
MsgBox, Значение переменной MyVar - %MyVar%.
Однако параметры некоторых команд явно определены как входные или выходные переменные. В этих случаях нет необходимости помещать переменную между знаками процента. Например, в команде StringLen, OutputVar, InputVar в начале и в конце переменных не должно быть знаков процента.
Имена переменных и функций нечувствительны к регистру. Кроме того, такие имена могут включать в себя цифры, буквы и следующие символы: # _ @ $ ? [ ] (квадратные скобки обычно используются для обозначения массивов, что впрочем, не является обязательным требованием). Имена переменных могут начинаться с цифр или даже полностью из них состоять (хотя имена, полностью состоящие из цифр, нельзя использовать в выражениях).
Замечания по поводу возможностей переменных и использования памяти:
Переменные окружения поддерживаются операционной системой. Их список можно посмотреть в командной строке при помощи команды SET.
Скрипт при помощи команды EnvSet может создавать новую переменную окружения или изменять содержимое уже существующих переменных. Подобные добавления и изменения являются приватными, и остальная часть системы их не видит. Однако если скрипт запускает программу (или другой скрипт) с помощью команд Run или RunWait, то эта программа наследует дубликат переменных окружения родительского скрипта, включая и приватные переменные.
Чтобы извлечь содержимое переменной окружения, сошлитесь на нее так же, как на обычную переменную. Основанием для этого является то обстоятельство, что любая ссылка на неопределенную или пустую переменную (например, %EmptyVar%) разрешается в пустую строку, если эта переменная не определена в среде (например, %ProgramFiles%).
Выражения нужны для выполнения операций с последовательностью переменных, буквальными строками, и/или с буквальными числами.
Если у буквальных чисел есть десятичная запятая, то внутри выражения они рассматриваются как числа с плавающей запятой. В противном случае они являются целыми числами. В большинстве операций, таких, как сложение и умножение, если какой-нибудь входной параметр является числом с плавающей запятой, результатом операции будет также число с плавающей запятой.
В выражении имена переменных не заключаются в знаки процента. Исключением являются массивы и другие двойные ссылки (см. таблицу ниже). В результате, для того, чтобы различать переменные и буквальные строки, последние необходимо заключать в двойные кавычки. Например:
if (CurrentSetting > 100 or FoundColor <> "Blue") MsgBox Слишком большое значение параметра или неверный цвет.
В примере, приведенном выше, параметр "Blue" заключен в кавычки и представляет собой слово Blue. Чтобы включить буквальные кавычки в буквальную строку, задайте две кавычки подряд, как показано в следующем примере: "Она сказала, ""Одно яблоко в день."""
Условный оператор, содержащий выражение, отличается от таких не содержащих выражений условных операторов, как
If FoundColor <> Blue
тем, что после слова if в нем стоит открывающая скобка. Хотя обычно все выражение заключается в круглые скобки, оно также может выглядеть и таким образом:
if (x < 0) and (y > 0)
Кроме того, в случае, если первый элемент после слова if является вызовом функции или оператором (например, not или !), открывающие скобки можно не ставить совсем.
Чтобы задать в выражении пустую строку, используйте пустую пару кавычек. Например, условный оператор
if (Var <> "")
вернет истину, если у переменной есть значение. Однако, если условный оператор не содержит выражений, пустые кавычки трактуются буквально. К примеру, приведенный далее условный оператор, не содержащий выражений, вернет истину, только если переменная Var действительно содержит пару кавычек:
if Var = ""
Таким образом, чтобы с помощью не содержащего выражений условного оператора проверить, есть ли у переменной значение, используйте в правой части оператора символы = или <> без указания чего-либо далее, как показано в примере:
if Var =
Если выражение недействительно (неверно), например, (x +* 3), оно выдает пустой результат (пустую строку).
Если выражение необходимо для проверки на истину или ложь (как условный оператор), пустой или нулевой результат расценивается как ложь, а все другие результаты - как истина. Например, оператор "if ItemCount" вернёт ложь, если переменная ItemCount пуста или равна 0, и истину иначе. Подобным образом выражение "if not ItemCount" даст противоположный результат.
Такие операторы, как NOT / AND / OR / > / = / <, автоматически выдают значение истина или ложь: если истина - результат 1, если ложь - 0. Например, если одно из условий в выражении Done := A_Index > 5 or FoundIt истинно, переменной Done присваивается значение 1.
Итак, как показано выше, для того, чтобы оператор всегда возвращал значение ложь, необходимо оставить значение переменной пустым или присвоить значение ноль. В практическом плане, чтобы проверить, истинно или ложно значение переменной Done, можно использовать краткий оператор "if Done".
В версиях 1.0.25.07 и выше, слова true и false являются встроенными переменными, принимающими значение 1 и 0. Их можно использовать, чтобы сделать скрипт более удобным для чтения, как показано в следующих примерах:
CaseSensitive := false ContinueSearch := true
Чтобы присвоить результат выражения переменной, используйте оператор := , например:
NetPrice := Price * (1 - Discount/100)
Поскольку результатом приведенного примера является число с плавающей запятой, количество десятичных разрядов, сохраняемых в NetPrice, определяется командой SetFormat. SetFormat может вносить и другие изменения в свойства результатов выражения. Однако, обратите внимание, что команда AutoTrim не может влиять на результат выражения.
В версиях 1.0.29 и выше, выражение можно использовать в параметре, который напрямую его не поддерживает (исключением являются параметры OutputVar или InputVar, как в команде StringLen). Для этого поставьте перед выражением знак процента и пробел или табуляцию. Этот способ часто используется для того, чтобы получить доступ к массиву. Примеры:
FileAppend, % MyArray%i%, My File.txt MsgBox % "Переменная MyVar содержит " MyVar "." Loop % Iterations + 1 WinSet, Transparent, % X + 100 Control, Choose, % CurrentSelection - 1
Операторы с равным приоритетом, такие, как умножение (*) и деление (/), исполняются по умолчанию слева направо. Операторы с более низким приоритетом, как например, сложение (+), исполняются после них. Например, выражение 3 + 2 * 2 будет вычисляться в том же порядке, что и выражение 3 + (2 * 2). Круглые скобки можно использовать для того, чтобы изменить порядок исполнения операторов: (3 + 2) * 2.
Операторы выражений (в порядке убывания приоритета):
(Ref) | Если в выражении появляется ссылка на переменную, например, %Var%, ее содержимое трактуется как имя или часть имени другой переменной (при отсутствии такой переменной, %Var% разрешается в пустую строку). Как правило, этот оператор используется для того, чтобы сослаться на элементы массива, например:
Var := MyArray%A_Index% + 100Подобная ссылка не может разрешаться в переменную окружения, буфер обмена или любую зарезервированную / только для чтения переменную. Если это происходит, ссылка трактуется как пустая строка. |
** | Степень (возведение в степень). Как основание, так и показатель степени могут содержать десятичную запятую. Если показатель степени - отрицательный, результатом будет число с плавающей запятой, даже если и основание, и показатель степени являются целыми числами. Отрицательное основание, как например, (-2)**2 не поддерживается: результатом такого выражения будет пустая строка. Однако, поскольку оператор ** имеет более высокий приоритет, чем унарный минус, -2**2 возвращает -4. |
- ! ~ & * |
Унарный минус (-). Хотя унарный минус использует тот же символ, что и оператор вычитания, он применяется только к одиночному элементу или подвыражению: -(3 / -x). Примечание: унарные плюсы в выражении игнорируются.
Логическое НЕ (!). Если операнд пуст или равен 0, результатом применения логического НЕ является 1, что означает "истина". Иначе, результат - 0 (ложь). Например: !x or !(y and z). Примечание: слово NOT является синонимом !. Единственным отличием между ними является более высокий приоритет символа !. Побитовое NOT (~): обращает каждый бит своего операнда. Если операнд - это значение с плавающей запятой, перед вычислением оно округляется до целого числа. Если значение операнда принадлежит диапазону от 0 до 4294967295 (0xffffffff), оно трактуется как беззнаковое 32-битное значение. Иначе, значение операнда трактуется как знаковое 64-битное значение. Например, ~0xf0f возвращает 0xfffff0f0 (4294963440). Адресация (&) и разадресация (*) [в версиях 1.0.36.07 и выше]: выражение &MyVar возвращает адрес содержимого переменной MyVar в памяти. Выражение *MyVar, напротив, предполагает, что идентификатор MyVar ссылается на числовой адрес в памяти и извлекает байт по этому адресу как число диапазона от 0 до 255 (если адрес нулевой, всегда возвращается 0, однако другие недействительные адреса могут привести к сбою в работе скрипта). Эти редко используемые операторы полезны при работе со структурами в команде DllCall и при обработке строк, содержащих бинарные нули. Одним и примеров является функция ExtractInteger(), описанная в статье про DllCall. |
* / // |
Умножение (*): если входные данные являются целыми числами, результатом будет также целое число. Иначе - число с плавающей запятой.
Истинное деление (/): в отличие от работы команды EnvDiv (/=), результатом истинного деления является число с плавающей запятой, даже если оба входных числа являются целыми числами. Например, в результате деления 3/2 получится 1.5, а не 1. Базовое деление (//): В версиях 1.0.34 и выше, если параметрами являются два целых числа, оператор двойного слеша осуществляет высокопроизводительное целочисленное деление. Например, 5//3 равно 1, а 5//-3 равно -1. Если одно из входящих значений вводится в формате числа с плавающей запятой, выполняется деление с плавающей запятой и результат округляется до ближайшего целого числа в сторону уменьшения. Например, 5//3.0 равно 1.0 и 5.0//-3 равно -2.0. Хотя результатом деления с плавающей запятой является целое число, оно сохраняется в формате с плавающей запятой, чтобы при дальнейшем использовании оно воспринималось именно так. Остаток целочисленного деления - см. описание функции mod(). Деление на 0 дает пустой результат (пустую строку). |
+ - |
Сложение и вычитание. Примечание: в выражениях любое пустое значение (пустая строка), участвующее в математической операции, не принимается равным 0. Вместо этого, оно трактуется как ошибка, в результате которой часть выражения возвращается как пустая строка. Например, если X - пустое значение, результатом выражения X+1 будет также пустое значение, а не 1. |
<< >> |
Сдвиг разряда влево и сдвиг разряда вправо. Перед вычислениями параметры с плавающей запятой округляются до целого числа. Сдвиг влево (<<) эквивалентен умножению Значения1 на "2 в степени Значение2". Сдвиг вправо (>>) эквивалентен делению Значения1 на "2 в степени Значение2", остаток округляется. |
& ^ | |
Побитовое И (&), побитовое исключающее ИЛИ (^), и побитовое ИЛИ (|). Самый высокий приоритет среди них имеет &, а самый низкий - |. Перед вычислениями параметры с плавающей запятой округляются до целых чисел. |
. | Конкатенация. Оператор точка можно использовать для объединения находящихся рядом строк и переменных (перед точкой и после нее необходимо оставить, по крайней мере, по одному пробелу). В большинстве случаев того же результата можно достичь, опустив точку (в этом случае между объединяемыми элементами должен быть хотя бы один пробел). Пример (с помощью выражения): Var := "Цвет " . FoundColor Пример (обычный способ): Var = Цвет %FoundColor% В версиях 1.0.31 и выше, такие подвыражения и ссылки, как Array%i% можно объединять с другими элементами. Примеры: Var := "Чистая стоимость " . Price * (1 - Discount/100) Var := "Из двух переменных X и Y большее значение имеет " . Max(X, Y) Var := "Значение элемента массива " i " " Array%i% Когда текст присоединяется к концу переменной, обычный способ конкатенации (=) работает лучше, чем объединение с помощью выражения (:=). Пример быстрого присоединения: Var = %Var%%TextToAppend% |
> < >= <= |
Больше, меньше, больше или равно, меньше или равно. Если один из параметров не является числом, сравнение производится в алфавитном порядке (в этом контексте буквальная строка в кавычках (например "55") всегда трактуется как нечисловая). Сравнение чувствительно к регистру, только если включена функция StringCaseSense. |
= == <> != |
Равно, равно с учетом регистра, не равно. Операторы != и <> идентичны. Оператор == ведет себя идентично оператору = , т.е. в случаях, когда какой-нибудь из параметров не является числом, оба оператора всегда чувствительны к регистру. Операторы <> и !=, напротив, подчиняются функции StringCaseSense. Примечание: в этом контексте буквальная строка в кавычках (например "55") всегда трактуется как нечисловая. |
NOT | Логическое НЕ. За исключением более низкого приоритета, логическое НЕ аналогично оператору !. Например, выражение not (x = 3 or y = 3) аналогично выражению !(x = 3 or y = 3) |
AND && |
Оба данных оператора являются логическим И. Например: x > 3 and x < 10. По возможности, для увеличения производительности используется "схема быстрой оценки". См. ссылку в оригинале статьи. |
OR || |
Оба данных оператора являются логическим ИЛИ. Например: x <= 3 or x >= 10. По возможности, для увеличения производительности используется "схема быстрой оценки". См. ссылку в оригинале статьи. |
mod() round() abs() |
Эти и другие встроенные математические функции описаны в соответствующей статье документации - см. ссылку в оригинале данной статьи. |
Также в скриптах можно использовать встроенные переменные. Большинство из них является "зарезервированными" (reserved), что означает, что скрипт не может непосредственно изменять их содержимое.
A_Space | Данная переменная содержит один символ пробела. См. описание команды AutoTrim. |
A_Tab | Данная переменная содержит один символ табуляции. См. описание команды AutoTrim. |
1, 2, 3, и т.д. | Эти переменные автоматически создаются при загрузке скрипта с параметрами командной строки. Их можно изменять и на них можно ссылаться, как на обычные имена переменных (например: %1%). Переменная %0% содержит количество переданных параметров (0, если параметры переданы не были). Подробнее - см. статью Скрипты. |
A_WorkingDir | Текущий рабочий каталог скрипта, в котором файлы доступны по умолчанию. Конечный обратный слеш нужен только в случае, если это корневой каталог. Два примера: C:\ и C:\Мои документы. Чтобы изменить рабочий каталог, используйте функцию SetWorkingDir. |
A_ScriptDir | Полный путь к каталогу, где находится текущий скрипт. Для полной совместимости с AutoIt v2, конечный обратный слеш нужен только для .aut-скриптов. Пример для .aut-скриптов: C:\My Documents\ |
A_ScriptName | Имя файла текущего скрипта без указания пути. Например: MyScript.ahk. |
A_ScriptFullPath | Комбинация двух переменных, приведенных выше. Определяет полную спецификацию файла скрипта, например: C:\My Documents\MyScript.ahk. |
A_LineNumber [v1.0.31+] | Число строк скрипта, выполняемых в данное время (или один из его #Include-файлов). Данное количество строк совпадает с количеством, которое показывает ListLines. Переменная может быть полезна для сообщений об ошибках. Например: MsgBox Нельзя записать в log-файл (количество строк %A_LineNumber%).
Поскольку скомпилированный скрипт объединяет все #Include-файлы в один большой скрипт, количество строк в нем и в нескомпилированном скрипте может различаться. |
A_LineFile [v1.0.31+] | Полный путь и имя файла, к которому принадлежит переменная A_LineNumber. Переменная A_LineNumber будет равна переменной A_ScriptFullPath, если данная строка не принадлежит одному из нескомпилированных #Include-файлов скрипта. |
A_AhkVersion | В версиях до 1.0.22 данная переменная пуста. Иначе, переменная содержит номер той версии AutoHotkey, которая исполняет скрипт (например: 1.0.22). Если скрипт скомпилирован, указывается версия, использовавшаяся для компиляции. Формат, в котором указывается номер версии, позволяет скрипту при помощи операторов > или >= проверять, больше ли переменная A_AhkVersion минимально допустимого номера версии. Например: if A_AhkVersion >= 1.0.25.07. |
A_IsCompiled | Содержит 1, если скрипт исполняется как скомпилированный EXE-файл, и ничего в обратном случае (в версиях от 1.0.27 и далее). |
A_ExitReason | Последняя причина, по который скрипт должен завершиться. У переменной есть значение, если скрипт имеет OnExit процедуру и эта процедура в данный момент исполняется или была вызвана попыткой завершить исполнение. Иначе, значения нет. Подробнее - см. описание команды OnExit. |
A_YYYY | Текущий год (4 цифры). Например: 2004. Данная переменная является синонимом переменной A_Year. Примечание: Чтобы извлечь время или дату в формате, характерном для вашего языка и местной специфики, используйте команду "FormatTime, OutputVar" (время и полная дата) или "FormatTime, OutputVar,, LongDate" (возвращает дату в полном формате). |
A_MM | Текущий месяц (2 цифры) от 01 до 12. Синоним A_Mon. |
A_DD | Текущий день месяца (2 цифры) от 01 до 31. Синоним A_MDay. |
A_MMMM | Полное название текущего месяца на языке пользователя. Например: Июль. |
A_MMM | Аббревиатура текущего месяца на языке пользователя. Например: Июл. |
A_DDDD | Полное название текущего дня недели на языке пользователя. Например: Воскресенье. |
A_DDD | Аббревиатура из трех букв текущего дня недели на языке пользователя. Например: Вск. |
A_WDay | Текущий день недели (1 цифра) от 1 до 7. 1 - воскресенье для любого региона. |
A_YDay | Текущий день года от 1 до 366. Значение возвращается без лидирующих нолей, т.е. 9, а не 009. Чтобы извлечь значение с лидирующими нолями, используйте команду: FormatTime, OutputVar, , YDay0. |
A_YWeek [v1.0.24+] | Текущий год и номер текущей недели согласно стандарту ISO 8601 (напр.: 200453). Чтобы отделить год от недели, используйте команды StringLeft, Year, A_YWeek, 4 и StringRight, Week, A_YWeek, 2. Точное определение переменной A_YWeek: если более четырех дней недели, в которую входит 1 января, приходится на новый год, эта неделя считается равной 1. Иначе, это последняя неделя старого года, а первой считается следующая неделя. |
A_Hour | Текущий час (2 цифры) от 00 до 23. Например: 17 - это 5 часов вечера. Чтобы извлечь время в формате от 1 до 12 с указателями AM/PM, сделайте так, как показано в примере: FormatTime, OutputVar, , h:mm:ss tt. |
A_Min | Текущая минута (2 цифры) от 00 до 59. |
A_Sec | Текущая секунда (2 цифры) от 00 до 59. |
A_MSec | Текущая миллисекунда (3 цифры) от 000 до 999. [в версиях от 1.0.29 и выше]. Чтобы убрать лидирующие нули: Milliseconds := A_MSec + 0. |
A_Now | Текущее местное время в формате YYYYMMDDHH24MISS. Примечание: математические операции над датами и временем могут быть выполнены с помощью команд EnvAdd и EnvSub. Кроме того, функция FormatTime может отформатировать дату и/или время в соответствии с форматом, принятом в вашем регионе или с вашими предпочтениями. |
A_NowUTC | Текущее универсальное глобальное время (UTC) в формате YYYYMMDDHH24MISS. Универсальное глобальное время в сущности то же самое, что и среднее время по Гринвичу (GMT). |
A_TickCount | Количество миллисекунд, прошедшее со времени перезагрузки компьютера. Сохранив значение A_TickCount в переменной, можно позднее измерить общее время работы. Для этого необходимо вычесть значение этой переменной из последнего значения A_TickCount. Например:
start_time := A_TickCount Sleep, 1000 elapsed_time := A_TickCount - start_time MsgBox, прошло %elapsed_time% миллисекунд. |
A_IsSuspended | Если работа скрипта временно приостановлена, значение 1, иначе 0. [в версиях от 1.0.27 и выше]. |
A_BatchLines | (синоним переменой A_NumBatchLines) Текущее значение, устанавливаемое командой SetBatchLines. Примеры: 200 или 10ms (в зависимости от формата). |
A_TitleMatchMode | Текущий режим (1, 2 или 3), устанавливаемый командой SetTitleMatchMode. |
A_TitleMatchModeSpeed | Текущая скорость поиска соответствия (fast или slow), устанавливаемая командой SetTitleMatchMode. |
A_DetectHiddenWindows | Текущий режим (On или Off), устанавливаемый командой DetectHiddenWindows. |
A_DetectHiddenText | Текущий режим (On или Off), устанавливаемый командой DetectHiddenText. |
A_AutoTrim | Текущий режим (On или Off), устанавливаемый командой AutoTrim. |
A_StringCaseSense | Текущий режим (On или Off), устанавливаемый командой StringCaseSense. |
A_FormatInteger | Текущий формат целого числа (H или D), устанавливаемый командой SetFormat. |
A_FormatFloat | Текущий формат числа с плавающей запятой, устанавливаемый командой SetFormat. |
A_KeyDelay | Текущая задержка, устанавливаемая командой SetKeyDelay (всегда десятичная, а не шестнадцатеричная). |
A_WinDelay | Текущая задержка, устанавливаемая командой SetWinDelay (всегда десятичная, а не шестнадцатеричная). |
A_ControlDelay | Текущая задержка, устанавливаемая командой SetControlDelay (всегда десятичная, а не шестнадцатеричная). |
A_MouseDelay | Текущая задержка, устанавливаемая командой SetMouseDelay (всегда десятичная, а не шестнадцатеричная). |
A_DefaultMouseSpeed | Текущая скорость, устанавливаемая командой SetDefaultMouseSpeed (всегда десятичная, а не шестнадцатеричная). |
A_IconHidden | Если иконка в трее скрыта, значение 1, иначе 0. Иконку можно скрыть с помощью директивы #NoTrayIcon или команды Menu. |
A_IconTip | Если с помощью команды Menu, Tray, Tip задана всплывающая пользовательская подсказка для иконки скрипта в трее, эта переменная содержит текст подсказки, иначе - пустое значение. |
A_IconFile | Если с помощью команды Menu, tray, icon задана пользовательская иконка скрипта в трее, здесь содержится полный путь и имя файла иконки. Иначе - пусто. |
A_IconNumber | Если переменная A_IconFile имеет пустое значение - пусто. Иначе - количество иконок в переменной A_IconFile (обычно 1). |
A_TimeIdle | Количество миллисекунд, прошедшее с тех пор, когда система последний раз получила ввод клавиатуры, мыши или другого устройства. С помощью этой переменной удобно определять, на месте ли пользователь. У переменной есть значение, если на компьютере стоит операционная система Windows 2000, XP, или выше. Иначе - пусто. При физическом вводе, поступившем от пользователя, и при искусственном вводе, сгенерированном любой программой или скриптом (например, командами Send или MouseMove), значение устанавливается назад на 0. Поскольку значение возрастает с шагом в 10, не проверяйте, равно ли оно какому-либо значению. Вместо этого проверяйте, больше оно или меньше этого значения. Например: IfGreater, A_TimeIdle, 600000, MsgBox, Последний раз клавиатура или мышь были активны по меньшей мере 10 минут назад. |
A_TimeIdlePhysical | Аналогично переменной, описанной выше. Однако данная переменная игнорирует искусственные нажатия клавиш и/или клики мыши в тех случаях, когда установлен соответствующий обработчик прерываний (клавиатуры или мыши). Если ни один обработчик не установлен, переменная ведет себя равносильно переменной A_TimeIdle. Если же имеется только один обработчик прерываний, игнорируются только искусственный ввод этого типа. Переменная A_TimeIdlePhysical больше подходит для того, чтобы определить, действительно ли пользователь находится на месте, чем переменная A_TimeIdle. |
A_Gui | Номер окна графического пользовательского интерфейса, запустившего текущий поток. Переменная имеет значение, если текущий поток запущен элементом управления графического пользовательского интерфейса, элементом меню или событием, подобным GuiClose/GuiEscape. Иначе - пусто. Требует версию 1.0.23 и выше. |
A_GuiControl | Имя переменной, соответствующее элементу управления графического пользовательского интерфейса, запустившего текущий поток. Если в этом управляющем элементе нет ассоциированной переменной, вместо нее переменная A_GuiControl содержит первые 63 символа текста/заголовка управляющего элемента (что часто используется для того, чтобы избежать необходимости присваивать каждой кнопке имя переменной). Переменная A_GuiControl не имеет значений в следующих случаях: 1) переменная A_Gui не имеет значения; 2) текущий поток запущен элементом меню графического пользовательского интерфейса или событием, подобным GuiClose/GuiEscape; 3) в элементе управления нет ассоциированной переменной и заголовка; 4) элемент управления, первоначально запустивший текущий поток, более не существует (возможно, благодаря Gui Destroy). Требует версию 1.0.23 и выше. |
A_GuiWidth A_GuiHeight |
Данные переменные содержат неопределенные/случайные значения, кроме тех случаев, когда они упомянуты в процедуре GuiSize. |
A_GuiX A_GuiY |
Данные переменные содержат координаты X и Y для событий GuiContextMenu и GuiDropFiles. |
A_GuiControlEvent A_GuiEvent - в версиях 1.0.36 и выше является синонимом переменной A_GuiControlEvent. |
Тип события, запустившего текущий поток. Если поток не был запущен с помощью действия графического пользовательского интерфейса, эта переменная не содержит значения. Иначе, она содержит одну из нижеприведенных строк: Normal: событие запущено однократным щелчком левой клавиши мыши или с помощью физических нажатий клавиш или кнопок (клавиши со стрелкой, клавиша TAB, пробел, подчеркнутая быстрая клавиша, и так далее). Это значение также используется для элементов меню и для специальных событий, таких, как GuiClose и GuiEscape. DoubleClick: событие запущено двойным щелчком мыши. Примечание: однако, вначале при первом щелчке будет получено событие Normal. Другими словами, процедура запустится дважды: после первого щелчка и еще раз после второго. RightClick: только для GuiContextMenu и ListViews. Контекстно-зависимые значения: см. описания GuiContextMenu, GuiDropFiles, Slider, MonthCal, и ListView. |
A_EventInfo [v1.0.36+] |
Содержит дополнительную информацию о событии g-label. Если дополнительной информации нет, содержит 0. Подробнее - см. описание GuiContextMenu, GuiDropFiles, ListBox, и ListView. Данная переменная называется A_EventInfo, а не A_GuiEventInfo, поскольку используется также в событиях, не относящихся к событиям графического пользовательского интерфейса: см. описание события OnClipboardChange. Примечание: В отличие от таких переменных, как A_ThisHotkey, каждый поток сохраняет свое собственное значение для переменных A_Gui, A_GuiControl, A_GuiX/Y, A_GuiControlEvent и A_EventInfo. Поэтому, если поток прерван другим потоком, при возобновлении исполнения он использует свои первоначальные/правильные значения этих переменных. |
A_ThisMenuItem | Имя последнего из выбранных пунктов меню (если ничего выбрано не было - значения нет). |
A_ThisMenu | Имя меню, в котором выбрана переменная A_ThisMenuItem. |
A_ThisMenuItemPos | Число, указывающее текущую позицию переменной A_ThisMenuItem внутри переменной A_ThisMenu. Первый пункт меню будет равен 1, второй - 2, и т.д. Разделительные линии меню также имеют свое число. Если у переменной A_ThisMenuItem значения нет или эта переменная больше не существует внутри переменной A_ThisMenu, данная переменная также не содержит значение. Она также не содержит значение, если самой переменной A_ThisMenu больше не существует. |
A_ThisHotkey | Имя клавиши последней из выполненных горячих клавиш (если горячие клавиши не выполнялись, значения нет), например, #z. Это значение изменится, если текущий поток будет прерван другой горячей клавишей, поэтому, если вы хотите позднее использовать первоначальное значение в процедуре, немедленно скопируйте его в другую переменную. |
A_PriorHotkey | Аналогично переменной, описанной выше. Однако, эта переменная не будет содержать значения, если перед последней выполненной горячей клавишей не была выполнена другая горячая клавиша. |
A_TimeSinceThisHotkey | Количество миллисекунд, прошедших со времени нажатия последней горячей клавиши (с тех пор, как была нажата клавиша A_ThisHotkey). Каждый раз, когда переменная A_ThisHotkey не будет содержать значений, значение данной переменной будет равно 1. |
A_TimeSincePriorHotkey | Количество миллисекунд, прошедших со времени нажатия горячей клавиши, предшествовавшей последней выполненной горячей клавише. Каждый раз, когда переменная A_PriorHotkey не будет содержать значений, значение данной переменной будет равно 1. |
A_EndChar | Конечный символ, нажатый пользователем для запуска последней строки автозамены, не являющейся простой автозаменой (auto-replace hotstring). Если в конечном символе необходимости не было (благодаря опции *), данная переменная не будет содержать значения. |
A_OSType | Тип запущенной операционной системы. Или WIN32_WINDOWS (т.е. Win95/98/ME), или WIN32_NT (т.е. WinNT, Win2k, WinXP и, возможно, более поздние). |
A_OSVersion | Одна из следующих строк: WIN_2003, WIN_XP, WIN_2000, WIN_NT4, WIN_95, WIN_98, WIN_ME. Например:
if A_OSVersion in WIN_NT4,WIN_95,WIN_98,WIN_ME ;Примечание: вокруг запятых не должно быть пробелов. { MsgBox Этот скрипт требует Windows 2000/XP или более поздних. ExitApp } |
A_Language | Язык по умолчанию системы, один из таблицы языков (см. здесь ссылку в оригинале статьи). Требует версии 1.0.24 и выше. |
A_ComputerName | Сетевое имя компьютера. Требует версии 1.0.24 и выше. |
A_UserName | Имя текущего пользователя, под которым он вошел в систему. Требует версии 1.0.24 и выше. |
A_WinDir | Каталог windows (в версиях от 1.0.23 и выше). Например: C:\Windows. |
A_ProgramFiles | Каталог Program Files (в версиях от 1.0.23 и выше). Например: C:\Program Files. |
A_Desktop | Полный путь и имя папки, содержащей файлы рабочего стола текущего пользователя (в версиях от 1.0.24 и выше). |
A_DesktopCommon | Полный путь и имя папки, содержащей файлы рабочего стола всех пользователей (в версиях от 1.0.24 и выше). |
A_StartMenu | Полный путь и имя папки меню Пуск текущего пользователя (в версиях от 1.0.24 и выше). |
A_StartMenuCommon | Полный путь и имя папки меню Пуск всех пользователей (в версиях от 1.0.24 и выше). |
A_Programs | Полный путь и имя папки Программы в меню Пуск текущего пользователя (в версиях от 1.0.24 и выше). |
A_ProgramsCommon | Полный путь и имя папки Программы в меню Пуск всех пользователей (в версиях от 1.0.24 и выше). |
A_Startup | Полный путь и имя папки Автозагрузка в меню Пуск текущего пользователя (в версиях от 1.0.24 и выше). |
A_StartupCommon | Полный путь и имя папки Автозагрузка в меню Пуск всех пользователей (в версиях от 1.0.24 и выше). |
A_MyDocuments | Полный путь и имя папки Мои Документы текущего пользователя. В отличие от большинства подобных переменных, в случае, если папка является корневой папкой диска, конечный обратный слеш не включается. Например, переменная будет содержать значение M:, а не M:\ (в версиях от 1.0.24 и выше). |
A_IsAdmin | Если у текущего пользователя есть права администратора, переменная содержит значение 1. Иначе - 0. В Windows 95/98/Me данная переменная всегда содержит значение 1. |
A_ScreenWidth A_ScreenHeight |
Длина и ширина основного монитора в пикселях (напр. 1024 на 768). Чтобы найти размеры других мониторов в мульти-мониторной системе, используйте команду SysGet. Чтобы узнать длину и ширину рабочего стола (даже если он расположен на множестве мониторов), воспользуйтесь приведенным ниже примером (однако в Windows 95/NT, обе переменные из примера будут установлены на 0): SysGet, VirtualWidth, 78 SysGet, VirtualHeight, 79Кроме того, команду SysGet можно использовать для нахождения рабочей области монитора, которая может быть меньше, чем полная область монитора, часть которого занимают панель задач и другие зарегистрированные панели рабочего стола. |
A_IPAddress1 по 4 | IP-адреса первых четырех сетевых адаптеров в компьютере. |
A_Cursor | Тип курсора мыши, отображаемого в данный момент на экране. Значением может быть одно из следующих слов: AppStarting, Arrow, Cross, Help, IBeam, Icon, No, Size, SizeAll, SizeNESW, SizeNS, SizeNWSE, SizeWE, UpArrow, Wait, Unknown. Акронимы, которые используются с курсорами, отображающимися во время изменения размеров объектов, указывают на стороны света, напр. NESW = NorthEast+SouthWest (северо-восток + юго-запад). Курсоры в форме руки (указывающей и хватающей) классифицируются как неизвестные. При неоднократном считывании содержимого данной переменной на высокой скорости (т.е. каждые 500 мсек. или быстрее), возможность делать двойные щелчки мышью может быть нарушена. На данный момент не существует способов обойти эту проблему. |
A_CaretX A_CaretY |
Текущие координаты X и Y каретки, т.е. точки вставки текста. Координаты относятся к активному окну, за исключением случаев, когда с помощью команды CoordMode их относят ко всему экрану. Если активного окна не существует, или позиция каретки не может быть определена, у переменных нет значений. Приведенный ниже скрипт позволит вам перемещать каретку, чтобы посмотреть, как текущая позиция отображается в автоматически обновляемой всплывающей подсказке. Обратите внимание, что некоторые окна (напр. некоторые версии MS Word) показывают одну и ту же позицию каретки, независимо от ее фактической позиции. #Persistent SetTimer, WatchCaret, 100 return WatchCaret: ToolTip, X%A_CaretX% Y%A_CaretY%, A_CaretX, A_CaretY - 20 returnПри неоднократном считывании содержимого данной переменной на высокой скорости (т.е. каждые 500 мсек. или быстрее), возможность делать двойные щелчки мышью может быть нарушена. На данный момент не существует способов обойти эту проблему. |
Clipboard | Содержимое буфера обмена операционной системы, доступное для чтения и записи. См. раздел "Буфер обмена" (в оригинале статьи здесь ссылка). |
ClipboardAll | Все содержимое буфера обмена (например, форматирование и текст). См. раздел ClipboardAll (в оригинале статьи здесь ссылка). Для версий от 1.0.29 и выше. |
ErrorLevel | См. раздел ErrorLevel (в оригинале статьи здесь ссылка). |
A_Index | Число повторений цикла. Например, когда скрипт первый раз исполняет тело цикла, переменная содержит число 1. См. раздел справки о Loop. |
A_LoopFileName, и т.д. | Эта и другие схожие переменные действуют только в пределах файлового цикла (см. соответствующие разделы справки). |
A_LoopRegName, и т.д. | Эта и другие схожие переменные действуют только в пределах реестрового цикла (см. соответствующие разделы справки). |
A_LoopReadLine | См. раздел справки "Цикл чтения файла". |
A_LoopField | См. раздел справки "Цикл парсинга строки". |
Перейти на главную страничку сайта (список статей, файлы для скачивания)
© 2007 http://www.script-coding.com При любом использовании материалов сайта обязательна ссылка на него как на источник информации, а также сохранение целостности и авторства материалов.