Почему не работает ahk

Синтаксис языка

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

Имена переменных всегда заключаются в значки процентов, за исключением случаев, которые в представленных примерах выделены жирным шрифтом:

  1. В параметрах, которые являются входными или выходными переменными: StringLen, OutputVar, InputVar.
  2. В левой части присвоения строки переменной: Var = 123abc.
  3. В левой части не содержащего выражений if-оператора: If Var1 0 MsgBox, Превышено время ожидания или окно закрыто. else MsgBox, Ваша страничка загружена. Return

Команда EnvAdd может складывать или вычитать количество дней, часов, минут или секунд, и представлять эти данные в виде строки, имеющей вид YYYYMMDDHH24MISS, где:
YYYY — year (год)
MM — month (месяц)
DD — day (день)
HH24 — hour (час)
MI — minutes (минуты)
SS — seconds (секунды)
В следующем примере показано вычитание семи дней из указанной даты:

Для вычисления количества прошедшего времени между двумя датами используйте команду EnvSub, как проиллюстрировано в примере из соответствующей статьи. Также, встроенная переменная A_Now содержит данные о текущем времени. И наконец, существуют ещё несколько встроенных переменных, работающих с датой/временем, как например команда FormatTime, использующаяся для создания строки даты/времени в произвольном формате.

Почему строки автозамены, команды Send и MouseClick не работают в некоторых играх?

Некоторые игры используют в своей работе только механизм DirectInput. Как следствие, такое приложение может игнорировать все эмуляции нажатий клавиш и кнопок мыши. Несмотря на то, что серьёзной работы по этому вопросу ещё не проводилось, было обнаружено, что для большинства игр увеличение параметра SetKeyDelay явилось эффективным для включения в работу команды Send. Попробуйте сделать так:

Читайте также  Разбор олимпиадных задач по программированию

Также для обхода этой проблемы вы можете попробовать использовать другие программы для эмуляции нажатий клавиш и кнопок мыши, такие, как Journal Macro, QuicKeys, KeyGO, OnHand, и Toggle Keyboard.

Я использую несколько языковых раскладок на клавиатуре. Почему команда Send и строки автозамены иногда пропечатывают мне не те буквы?

Это происходит потому, что язык, на котором работает скрипт (английский) не совпадает с языковой раскладкой, выбранной вами для работы в конкретном приложении. Для синхронизации раскладок, вам нужно изменить "язык" для скриптов AutoHotkey. Сделать это можно вручную: простым двойным кликом на иконке скрипта в системном трее вызываем рабочее окно самого скрипта, далее меняем раскладку клавиатуры (обычно в Windows это LeftAlt+Shift), закрываем окно. Можно также воспользоваться следующим примером скрипта, автоматически меняющего языковую раскладку для скриптов AutoHotKey:

Дополнительная информация: как и любое другое приложение, каждый скрипт начинает работу с языком, установленным вами по умолчанию. Если эта установка не совпадает с языковой раскладкой, выбранной для приложения, куда вы "впечатываете" строки, скрипт может "перевести" их в нечто невообразимое.

Могу ли я управлять Winamp’ом, если его окно не является активным?

Смотрите статью "Управление Winamp’ом".

Как можно изменить надписи на кнопках, появляющихся в окошке MsgBox?

Смотрите пример в статье "Изменение надписей на кнопках в MsgBox".

Горячие клавиши, строки автозамены и переназначение клавиш

Четвёртая (XButton1) и пятая кнопка мыши (XButton2) также доступны для программы, при условии, что драйвера мыши позволяют Windows "увидеть" их сигналы. Если же сигналы от этих кнопок Windows не видит, а также в том случае, когда на мыши есть ещё какие-либо дополнительные кнопки, вы можете сконфигурировать драйвера мыши таким образом, чтобы при нажатии этих дополнительных кнопок в Windows посылались бы нажатия стандартных клавиатурных клавиш, а уже их использовать в своих скриптах. Например, если вы в драйверах мыши установили на её четвёртую кнопку посылание сигналов нажатий комбинации клавиш Control+F12, то в своих скриптах можете спокойно программировать на горячие клавиши ^F12:: все, что вам нужно.

Читайте также  Прекращена работа программы скайп

Если всё-таки пятая и четвертая кнопки вашей мыши остаются невидимыми для Windows, вы можете попробовать не устанавливать "родные" мышиные драйвера, а использовать вместо них драйвера по умолчанию для мыши Windows. Это может помочь, однако в этом случае вы, само собой, будете лишены возможности использовать расширенные функции, которые были заложены в "фирменные" драйвера.

Как использовать символы и знаки пунктуации в качестве горячих клавиш?

Символы, которые выдает клавиатура напрямую, без дополнительного нажатия клавиши Shift, можно использовать как обычные клавиши, без всяких прочих условий, за исключением точки с запятой, которая прописывается как (`;::). Вот пример использования акцента в качестве горячей клавиши:

При использования символов, для которых необходимо предварительное нажатие клавиши Shift (например @ и ?) необходимо прописывать комбинацию клавиш Shift и той клавиши, на которой находится искомый символ. Например, если вам нужно записать как горячие клавиши комбинацию Control+Звездочка, делаем так:

Клавиши-модификаторы всегда соотносятся с именованными клавишами. Например, если вы хотите использовать комбинацию Ctrl+Alt+Win, используйте ^!LWin или ^!RWin вместо ^!#. Для клавиши Space используйте запись ^Space вместо "^ ". Примечание: клавиши-модификаторы нажимаются перед нажатием именованных клавиш. Так, в нашем первом примере сначала нажимаются клавиши Ctrl+Alt, а уж затем — LWin или RWin (правая или левая клавиша "Windows").

Как переназначить на клавиши или кнопки мыши другие символы/клавиши?

Смотрите статью о переназначении клавиш.

Можно ли сделать так, чтобы горячие клавиши или строки автозамены посылались исключительно для одной программы? Другими словами, во всех других приложениях эти клавиши работали бы как самые обычные клавиши, и только в нужной мне программе ими бы включались соответствующие скрипты?

В нижеприведенном примере клавиша NumpadEnter сконфигурирована таким образом, что работает как обычный NumpadEnter до тех пор, пока окно программы "CAD Editor" не становится активным. Обратите внимание на использование символа $ в записи "$NumpadEnter". Такая запись сообщает программе, что клавиша имеет возможность "посылать сама себя".

Читайте также  Превью этого рисунка недоступно в лайтруме

Рассмотрим также и другой метод, но он работает только в том случае, если программа "CAD Editor" изначально сконфигурирована таким образом, что совершенно не реагирует на нажатие клавиши NumpadEnter. Префикс из тильды (

) превращает NumpadEnter в незаблокированную горячую клавишу (клавишу, которая работает как "горячая клавиша", но при этом всегда посылается активному окну). То есть запись вида

NumpadEnter позволяет использовать клавишу NumpadEnter как обычный NumpadEnter всё то время, пока она не запускает наш скрипт:

NumpadEnter:: IfWinNotActive, CAD Editor Return ; Если же окно нашей программы стало активным, выполняется следующее действие: Send, abc Return

Рассмотрим следующий пример:

Теперь сделаем так, чтобы Numpad0 работал как обычный Numpad0 до тех пор, пока он нам не понадобится для запуска нашей комбинации, описанной выше:

Префикс $ необходим для предотвращения появления диалога ошибки, сигнализирующей о возникновении бесконечного цикла (так как наша горячая клавиша "посылает сама себя"). В дополнение скажем, что команда выполняется в момент возвращения (подъёма вслед за нажатием) клавиши.

Существует ли способ, позволяющий использовать в своих целях "встроенные" в Windows сочетания клавиш, например такие, как Win+U (Utility Manager) и Win+R (Run)? Можно ли их изменить или отключить совсем?

Смотрите соответствующую статью о переназначении и запрещении горячих клавиш.

На моей клавиатуре есть специальная клавиша 000. Можно ли её использовать как горячую клавишу?

Да, вы можете её использовать. В нашем примере показано, как можно использовать клавишу 000, превратив её в знак равенства. В строке скрипта "Send, =" Вы можете заменить знак равенства на всё, что вам угодно. Примечание: пример доступен по ссылке, которая имеется в оригинале этой статьи.

Ссылка на основную публикацию
Adblock
detector