Вы можете задать любой вопрос по программе Autohotkey в нашей группе Вконтакте. Если решение требует более высокой квалификации- можно обратиться непосредственно ко мне.
Группа Вконтакте | Электронная почта | Симаков Яков ВК |
Ждёт, пока пользователь напечатает строку
OutputVar | Имя переменной, в которой будет сохранён введённый пользователем текст (по умолчанию захватывается также искусственный ввод). Если этот и другие параметры опущены, любая команда Input, выполняемая в этот момент в другом потоке, завершается, и в её переменную ErrorLevel пишется слово NewInput. В отличие от этого, ErrorLevel текущей команды Input устанавливается в 0, если она прервала работу предыдущей команды Input, или в 1, если прерывать было нечего. В OutputVar не помещаются нажатия клавиш как таковые. Вместо этого там сохраняются символы, соответствующие этим нажатиям в раскладке клавиатуры (языке) активного окна. Вследствие этого, нажатия клавиш, не производящие символов (такие как PageUp и Escape), не сохраняются (хотя они могут распознаваться через параметр EndKeys, описанный ниже). Пробельные символы, такие как TAB (`t), сохраняются буквально. ENTER сохраняется как перевод строки (`n). |
Options | Может быть пустым или содержать какие-то из следующих букв (в любом порядке, с пробелами или без): B: Backspace игнорируется. По умолчанию нажатие Backspace удаляет последний введённый символ с конца строки. Замечание: если вводимый текст видим (например, в редакторе) и были использованы клавиши-стрелки или другое средство для перемещения по тексту, Backspace всё равно удалит последний символ текста, а не тот, что позади каретки (текстового курсора). C: Чувствительность к регистру. По умолчанию MatchList нечувствителен к регистру (в версиях до 1.0.43.03 только буквы A-Z распознаются как имеющие разные регистры, но не такие буквы, как ű/Ű). I: Игнорировать ввод, генерируемый скриптами AutoHotkey - такой, как через команду SendEvent. Однако ввод через команды SendInput и SendPlay игнорируется всегда, независимо от данной настройки. L: Ограничение длины (например, L5). Максимальная разрешённая длина вводимой строки. Когда текст достигнет указанной длины, команда Input завершится и в ErrorLevel будет записано слово Max, если только при этом текст не совпадёт ни с одной из строк, перечисленных в MatchList. В последнем случае в ErrorLevel помещается слово Match. Если данный параметр не задан, ограничение по длине составляет 16383 символов, что также является абсолютным максимумом. M: Нажатия с модификаторами, такие как Control-A и далее, до Control-Z, распознаются и транскрибируются, если они соответствуют реальным символам из набора ASCII. Вот пример, который распознаёт Control-C: Transform, CtrlC, Chr, 3 ; Сохранить символ, соответствующий Ctrl-C, в переменную CtrlC.
Input, OutputVar, L1 M
if OutputVar = %CtrlC%
MsgBox, Вы нажали Control-C.
ExitApp
Замечание: символы, посылаемые комбинациями от Ctrl-A до Ctrl-Z, лежат в диапазоне от Chr(1) до Chr(26). Опция M может также вызвать отклонения от нормы в работе таких горячих клавиш, как Ctrl-ЛеваяСтрелка в то время, когда выполняется команда Input.T: Таймаут (например, T3). Через указанное число секунд команда Input завершится, и в ErrorLevel запишется слово Timeout. Если Input завершается по таймауту, в OutputVar будет текст, который пользователь успел ввести. Можно задавать числом с плавающей точкой, например, 2.5. V: Видимость текста. По умолчанию ввод пользователя блокируется (прячется от системы). Используйте эту опцию, если хотите, чтобы ввод посылался в активное окно. *: Искать везде. По умолчанию весь текст, который напечатает пользователь, должен точно совпасть с одной из строк в MatchList. Задайте эту опцию, если хотите, чтобы отслеживались совпадения части вводимого текста. |
EndKeys | Может быть пустым или содержать список клавиш, при нажатии на любую из которых работа Input должна быть завершена (сами эти клавиши не попадут в OutputVar). Когда Input завершается таким образом, в ErrorLevel помещается слово EndKey, затем двоеточие и имя завершающей клавиши. Примеры:
EndKey:.
EndKey:Escape
В списке EndKey используется тот же формат, что и для команды Send. Например, при указании {Enter}.{Esc} Input будет завершаться по нажатию клавиш ENTER, точка (.) или ESCAPE. Чтобы сами фигурные скобки завершали Input, их нужно задать как {{} и/или {}}.Чтобы использовать Control, Alt или Shift в качестве завершающих, указывайте конкретно левую и/или правую клавишу из пары. Например, {LControl}{RControl}, но не {Control}. Хотя комбинации с модификаторами, вроде Control-C (^c), не поддерживаются, но с версии v1.0.14 поддерживаются в качестве завершающих знаки, требующие удержания клавиши Shift, а именно символы пунктуации, такие как ?!:@&{}. Указание кода виртуальной клавиши, наподобие {vkFF}, также допустимо. Это полезно в тех редких случаях, когда клавиша не имеет имени и при нажатии не производит никакого видимого символа. Её виртуальный код может быть определён методом, описанным в конце статьи Список клавиш и кнопок мыши/джойстика. |
MatchList | Разделённый запятыми список ключевых строк. При совпадении вводимого текста с любой из них Input завершается, и в ErrorLevel пишется слово Match. Если не задана опция *, весь введённый текст целиком должен точно совпасть с какой-то из строк. Учтите, что если вокруг разделяющих запятых есть пробелы или табуляции, они считаются частями ключевых строк. Например, если MatchList содержит "ABC , XYZ ", совпадение случится только, если пользователь напечатает пробелы после ABC и перед XYZ. Если ключевая строка сама содержит запятую, запятую нужно удвоить. Например, "string1,,,string2" означает две ключевых строки, причём первая содержит на конце запятую. Тогда как "single,,item" - это одна строка, содержащая запятую внутри себя. Поскольку строки в MatchList не рассматриваются как отдельные параметры, весь MatchList может храниться в одной переменной. Фактически помещение его всего или его части в переменную неизбежно, если его длина превышает 16383, что является максимально возможной длиной строки в скрипте. Например, MatchList мог бы состоять из %List1%,%List2%,%List3%, где каждая из переменных содержит часть списка. |
1 или 0 | Всегда, когда Input вызывается без параметров, ErrorLevel устанавливается в 0, если она успешно завершает работу предыдущей команды Input, или в 1, если предыдущей команды нет. |
NewInput | Работа Input была прервана другим потоком, также вызвавшим команду Input. |
Max | Вводимый текст достиг максимальной разрешённой длины и при этом не совпал ни с одной из строк в MatchList. |
Timeout | Истёк заданный таймаут. |
Match | Произошло совпадение ввода с одной из строк в MatchList. |
EndKey:Имя | Была нажата одна из завершающих клавиш. В этом случае после двоеточия будет стоять имя завершающей клавиши, без фигурных скобок, т.е. EndKey:Enter, EndKey:Escape и т.п. |
Если эта команда используется, когда в другом потоке также уже работает команда Input, работа предыдущей будет завершена и в её ErrorLevel запишется слово NewInput. После этого (если были заданы параметры) начнёт работать новая команда Input.
Во время работы Input могут запускаться новые потоки через пункты меню или таймеры. Горячие клавиши также действуют, если ввод через команду Input видим. Если ввод скрыт, действуют только горячие клавиши, использующие клавиатурный хук.
Когда скрипт впервые вызывает команду Input, устанавливается клавиатурный хук (если он уже не был установлен). Вдобавок скрипт становится резидентным, что означает, что для его завершения придётся использовать команду ExitApp. Клавиатурный хук останется установленным до следующего использования команд Suspend или Hotkey, когда он и будет удалён, если не требуется для каких-либо горячих клавиш или строк автозамены.
Если вы используете несколько языков ввода (раскладок клавиатуры), Input использует раскладку активного окна, а не самого скрипта (независимо от того, видим ввод или скрыт). Однако в версиях до 1.0.44.03 используется раскладка скрипта.
Хотя строки автозамены не обладают гибкостью Input, они проще её в использовании.