Перейти на главную страничку сайта (список статей, файлы для скачивания)
Проект перевода документации AutoHotkey: перечень переведённых статей и статей в работе.
Оригинал статьи в AutoHotkey.chm: "Frequently Asked Questions (FAQ)", в содержании - "FAQ (Frequently Asked Questions)"
Ник переводчика: Дед Мазай.
Настоящее имя переводчика: Антон Иваненко, г.Москва.
Двойные кавычки (") имеют специальное назначение, только если они соотносятся с выражениями. Во всех же остальных случаях они трактуются как обычные символы. Также, при запуске какой либо программы или файла, операционная система как правило требует наличия кавычек в строке адреса, если там содержатся пробелы. Например:
Run, Notepad.exe "C:\My Documents\Address List.txt"
Имена переменных всегда заключаются в значки процентов, за исключением случаев, которые в представленных примерах выделены жирным шрифтом:
Если вы хотите использовать значки процентов как обычные клавиатурные символы, то добавьте перед ними значок акцента:
F7::MsgBox На данный момент мы имеем целых 25`%.
С текстовыми запятыми поступаем аналогичным образом (`,), за исключением тех случаев, когда они используются с командой MsgBox или являются последним параметром какой-либо команды (в этих случаях использование акцента допускается, но большой необходимости в этом нет).
В тех случаях, когда запятые или значки процентов заключены в кавычки в каком-либо выражении, использование акцента допускается, но большой необходимости в этом нет. Например: Var := "15%"
Дело в том, что некоторые программы нуждаются в точном указании их рабочей директории, например:
Run, %ProgramFiles%\Some Application\App.exe, %ProgramFiles%\Some Application
Небольшая бесплатная утилита cb.zip (4 KB) захватывает до 512 Кб выходных данных команды или программы. Эта информация в виде текста записывается в буфер обмена, откуда к ней можно получить доступ при использовании соответствующей переменной, например:
RunWait %comspec% /c dir | cb.exe MsgBox %clipboard%
Для остановки исполнения скрипта (пауза) и возобновления его работы позднее, пропишите на какую-нибудь клавишу команду Pause, как в нашем примере:
^!p::Pause ; Нажатие комбинации Ctrl+Alt+P приостанавливает исполнение нашего скрипта. ;Для запуска его вновь нажмите Ctrl+Alt+P ещё раз.
Для остановки какого-либо повторяющегося действия внутри Loop (цикла), рассмотрим в нашем примере метод создания горячих клавиш, каждая из которых останавливает и запускает своё собственное повторяющееся действие. Другими словами, нажатие клавиши (или комбинации клавиш) запускает цикл (Loop), а повторное нажатие заданных клавиш останавливает его.
#MaxThreadsPerHotkey 3 #z:: ; Комбинация клавиш Win+Z. #MaxThreadsPerHotkey 1 if KeepWinZRunning = y ; Эта запись соотносится с нижележащим тредом и обозначает, ;что наш Loop в данный момент исполняется. { KeepWinZRunning = ; А здесь мы оставляем пустым, что обозначает остановку исполнения нашего цикла. Return ; Собственно команда Return, закрывающая наш тред. } ; А также: KeepWinZRunning = y Loop, { ToolTip, Нажмите Win-Z снова для остановки появления этого окошка подсказки. Sleep, 1000 ToolTip if KeepWinZRunning = ; Здесь мы, нажимая Win-Z снова, даём сигнал на остановку нашего цикла. Break ; Собственно команда Break, останавливающая исполнение нашего цикла. Sleep, 1000 } KeepWinZRunning = ; Reset (сброс) для подготовки к следующему нажатию наших "горячих клавиш". Return
Если вы обнаружили, что горячие клавиши, команда GetKeyState, перемещения курсора (в скриптах, использующих кнопки мыши) недостаточно хорошо работают в приложениях с мощной загрузкой CPU, возможно, увеличение приоритета сможет вам помочь. Чтобы сделать это, добавьте следующую строку в заголовок вашего скрипта, что позволит увеличить его приоритет исполнения с нормальной до высокой степени. Эта запись сообщает операционной системе уделить больше внимания к исполнению данных команд:
Process, Priority, , High
Техника, описанная ниже, успешно работает с большинством страниц, открываемых через MS Internet Explorer. Таким же способом строится работа и с другими браузерами:
#z:: Run, www.yahoo.com MouseMove, 0, 0 ; Это сделано для предотвращения появления адреса ссылки, попавшей под курсор мыши, вместо ;нужного нам в строке состояния "Готово". WinWait, Yahoo! - Microsoft Internet Explorer WinActivate StatusBarWait, Готово, 30 if ErrorLevel <> 0 MsgBox, Превышено время ожидания или окно закрыто. else MsgBox, Ваша страничка загружена. Return
Команда EnvAdd может складывать или вычитать количество дней, часов, минут или секунд, и представлять эти данные в
виде строки, имеющей вид YYYYMMDDHH24MISS, где:
YYYY - year (год)
MM - month (месяц)
DD - day (день)
HH24 - hour (час)
MI - minutes (минуты)
SS - seconds (секунды)
В следующем примере показано вычитание семи дней из указанной даты:
EnvAdd, VarContainingTimestamp, -7, days
Для вычисления количества прошедшего времени между двумя датами используйте команду EnvSub, как проиллюстрировано в примере из соответствующей статьи. Также, встроенная переменная A_Now содержит данные о текущем времени. И наконец, существуют ещё несколько встроенных переменных, работающих с датой/временем, как например команда FormatTime, использующаяся для создания строки даты/времени в произвольном формате.
Некоторые игры используют в своей работе только механизм DirectInput. Как следствие, такое приложение может игнорировать все эмуляции нажатий клавиш и кнопок мыши. Несмотря на то, что серьёзной работы по этому вопросу ещё не проводилось, было обнаружено, что для большинства игр увеличение параметра SetKeyDelay явилось эффективным для включения в работу команды Send. Попробуйте сделать так:
SetKeyDelay, 10, 10 SetKeyDelay, 0, 10
Также для обхода этой проблемы вы можете попробовать использовать другие программы для эмуляции нажатий клавиш и кнопок мыши, такие, как Journal Macro, QuicKeys, KeyGO, OnHand, и Toggle Keyboard.
Это происходит потому, что язык, на котором работает скрипт (английский) не совпадает с языковой раскладкой, выбранной вами для работы в конкретном приложении. Для синхронизации раскладок, вам нужно изменить "язык" для скриптов AutoHotkey. Сделать это можно вручную: простым двойным кликом на иконке скрипта в системном трее вызываем рабочее окно самого скрипта, далее меняем раскладку клавиатуры (обычно в Windows это LeftAlt+Shift), закрываем окно. Можно также воспользоваться следующим примером скрипта, автоматически меняющего языковую раскладку для скриптов AutoHotKey:
#z:: ; Комбинация клавиш Win+Z. ListLines ; Эта команда открывает рабочее окно скрипта. WinWaitActive ahk_class AutoHotkey Sleep, 100 Send {LAlt Down}{Shift}{LAlt Up} ; Cобственно смена раскладки. Sleep, 100 WinMinimize ; Эта команда сворачивает активное в данный момент окно. Return ::втмм::вот так-то, милый мой ::btw::by the way
Дополнительная информация: как и любое другое приложение, каждый скрипт начинает работу с языком, установленным вами по умолчанию. Если эта установка не совпадает с языковой раскладкой, выбранной для приложения, куда вы "впечатываете" строки, скрипт может "перевести" их в нечто невообразимое.
Смотрите статью "Управление Winamp'ом".
Смотрите пример в статье "Изменение надписей на кнопках в MsgBox".
Во-первых, не все операционные системы поддерживают данную функцию. Вы не сможете воспользоваться всем набором команд AutoHotkey, если используете Windows 95/98/Me. Для других же операционных систем таких ограничений нет, и все кнопки должны работать (например, в качестве горячей клавиши вы можете использовать комбинацию Win+LeftButton, которая в скрипте записывается так "#LButton::"). Точно также доступны средняя кнопка мыши и повороты колеса, за исключением случаев, когда "особо злостные" драйвера для мыши напрямую контролируют эти кнопки.
Четвёртая (XButton1) и пятая кнопка мыши (XButton2) также доступны для программы, при условии, что драйвера мыши позволяют Windows "увидеть" их сигналы. Если же сигналы от этих кнопок Windows не видит, а также в том случае, когда на мыши есть ещё какие-либо дополнительные кнопки, вы можете сконфигурировать драйвера мыши таким образом, чтобы при нажатии этих дополнительных кнопок в Windows посылались бы нажатия стандартных клавиатурных клавиш, а уже их использовать в своих скриптах. Например, если вы в драйверах мыши установили на её четвёртую кнопку посылание сигналов нажатий комбинации клавиш Control+F12, то в своих скриптах можете спокойно программировать на горячие клавиши ^F12:: все, что вам нужно.
Если всё-таки пятая и четвертая кнопки вашей мыши остаются невидимыми для Windows, вы можете попробовать не устанавливать "родные" мышиные драйвера, а использовать вместо них драйвера по умолчанию для мыши Windows. Это может помочь, однако в этом случае вы, само собой, будете лишены возможности использовать расширенные функции, которые были заложены в "фирменные" драйвера.
Символы, которые выдает клавиатура напрямую, без дополнительного нажатия клавиши Shift, можно использовать как обычные клавиши, без всяких прочих условий, за исключением точки с запятой, которая прописывается как (`;::). Вот пример использования акцента в качестве горячей клавиши:
`::MsgBox, Вы нажали акцент.
При использования символов, для которых необходимо предварительное нажатие клавиши Shift (например @ и ?) необходимо прописывать комбинацию клавиш Shift и той клавиши, на которой находится искомый символ. Например, если вам нужно записать как горячие клавиши комбинацию Control+Звездочка, делаем так:
^+8::MsgBox, Вы нажали Ctrl+Shift+8 а это то же самое что и Ctrl+*.
Клавиши-модификаторы всегда соотносятся с именованными клавишами. Например, если вы хотите использовать комбинацию Ctrl+Alt+Win, используйте ^!LWin или ^!RWin вместо ^!#. Для клавиши Space используйте запись ^Space вместо "^ ". Примечание: клавиши-модификаторы нажимаются перед нажатием именованных клавиш. Так, в нашем первом примере сначала нажимаются клавиши Ctrl+Alt, а уж затем - LWin или RWin (правая или левая клавиша "Windows").
Смотрите статью о переназначении клавиш.
В нижеприведенном примере клавиша NumpadEnter сконфигурирована таким образом, что работает как обычный NumpadEnter до тех пор, пока окно программы "CAD Editor" не становится активным. Обратите внимание на использование символа $ в записи "$NumpadEnter". Такая запись сообщает программе, что клавиша имеет возможность "посылать сама себя".
$NumpadEnter:: IfWinNotActive, CAD Editor { Send, {NumpadEnter} Return } ; Если же окно нашей программы стало активным, выполняется следующее действие: Send, abc Return
Рассмотрим также и другой метод, но он работает только в том случае, если программа "CAD Editor" изначально сконфигурирована таким образом, что совершенно не реагирует на нажатие клавиши NumpadEnter. Префикс из тильды (~) превращает NumpadEnter в незаблокированную горячую клавишу (клавишу, которая работает как "горячая клавиша", но при этом всегда посылается активному окну). То есть запись вида ~NumpadEnter позволяет использовать клавишу NumpadEnter как обычный NumpadEnter всё то время, пока она не запускает наш скрипт (это работает только в Windows NT/2k/XP):
~NumpadEnter:: IfWinNotActive, CAD Editor Return ; Если же окно нашей программы стало активным, выполняется следующее действие: Send, abc Return
Рассмотрим следующий пример:
Numpad0 & Numpad1::MsgBox, Вы нажали Numpad1, удерживая нажатым Numpad0.
Теперь сделаем так, чтобы Numpad0 работал как обычный Numpad0 до тех пор, пока он нам не понадобится для запуска нашей комбинации, описанной выше:
$Numpad0::Send, {Numpad0}
Префикс $ необходим для предотвращения появления диалога ошибки, сигнализирующей о возникновении бесконечного цикла (так как наша горячая клавиша "посылает сама себя"). В дополнение скажем, что команда выполняется в момент возвращения (подъёма вслед за нажатием) клавиши.
Смотрите соответствующую статью о переназначении и запрещении горячих клавиш.
Да, вы можете её использовать, но при условии работы под Windows NT, 2000, или XP. В нашем примере показано, как можно использовать клавишу 000, превратив её в знак равенства. В строке скрипта "Send, =" Вы можете заменить знак равенства на всё, что вам угодно. Примечание: пример доступен по ссылке, которая имеется в оригинале этой статьи.
Перейти на главную страничку сайта (список статей, файлы для скачивания)
© 2007 http://www.script-coding.com При любом использовании материалов сайта обязательна ссылка на него как на источник информации, а также сохранение целостности и авторства материалов.