Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » AutoHotkey

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76

Открыть новую тему     Написать ответ в эту тему

chum2000

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

   
 
Актуальная версия: AutoHotkey 2.0.5 от 12 августа 2023
Версия для Windows XP | Changes from v1.1 to v2.0
 
Официальный сайт | Англоязычный форум | Архивный форум | Русскоязычный форум
Документация (англ.) | Документация и статьи (рус.) | История изменений
 
Подборка полезных скриптов | AutoHotkey + Total Commander
 

Цитата:
AutoHotkey — бесплатная программа с открытым исходным кодом для создания макросов и автоматизации, позволяющая упростить выполнение повторяющихся задач.
 
AutoHotkey позволяет изменить интерфейс практически любой программы. Имеет собственный скриптовый язык, специально нацеленный на лёгкое назначение и переназначение горячих клавиш.
 
AutoHotkey можно использовать для запуска программ, отправки текста, имитации мыши. Скриптовый язык позволяет управлять окнами, файлами и папками. Команды могут быть активированы горячими клавишами.
 
Также имеются возможности создания GUI, работы с реестром, использования собственного API окон для вызова DLL-файлов. Скрипты можно скомпилировать в EXE-файл и запускать на любом компьютере с Windows соответствующей версии.
 
Наиболее частое применение AutoHotkey:
- переназначение клавиш (глобально или у отдельных программ)
- управление мышью с помощью клавиатуры или джойстика
- слежение за системой, автоматическое выполнение некоторых действий по желанию пользователя, таких как напоминание, сканирование или резервное копирование
 

Всего записей: 505 | Зарегистр. 04-03-2004 | Отправлено: 00:28 02-06-2005 | Исправлено: Egor2020, 10:08 21-09-2023
aidomars



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Запиши группы в главном файле

Всего записей: 982 | Зарегистр. 23-04-2007 | Отправлено: 14:51 08-05-2013
oshizelly



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
aidomars 13:51 08-05-2013
Цитата:
Запиши группы в главном файле

Попробовал. Всё равно не работает. А должно?
 

Код:
#Include, D:\My Documents\AutoHotkey - CapsLock suppress.ahk
 
GroupAdd DisableInertMode, ahk_class TTOTAL_CMD  
GroupAdd DisableInertMode, ahk_class ATL:00730608
#Include, D:\My Documents\AutoHotkey - disable Insert key mode (ex in Total Commander and ReGet Delux).ahk
 


Код:
#persistent
#If (A_Cursor = "IBeam")
; GroupAdd DisableInertMode, ahk_class TTOTAL_CMD  
; GroupAdd DisableInertMode, ahk_class ATL:00730608
#IfWinNotActive ahk_group DisableInertMode
{
Insert::return
NumpadIns::return
}

Всего записей: 6524 | Зарегистр. 18-09-2004 | Отправлено: 15:34 08-05-2013 | Исправлено: oshizelly, 18:02 08-05-2013
aidomars



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Возможно дело в persistent, попробуй убери его

Всего записей: 982 | Зарегистр. 23-04-2007 | Отправлено: 17:06 08-05-2013
creature_ws



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Директивы #if влияют лишь на нижележащие горячие клавиши.

Код:
#If (A_Cursor = "IBeam")  

Здесь не к месту.
 
После запуска скрипт выполняется сверху вниз до return, exitapp или метки горячей клавиши.
Строки

Цитата:
GroupAdd DisableInertMode, ahk_class TTOTAL_CMD  
GroupAdd DisableInertMode, ahk_class ATL:00730608  

должны быть выполнены прежде чем вы будете использовать группу с именем DisableInertMode.
Для этого их нужно поместить, например, в начале файла до первого return или метки горячей клавиши.
Часть скрипта от начала файла до первого return или метки горячей клавиши называется секцией автовыполнения.
 
#include во время загрузки скрипта вставляет в файл в котором находится (на то место где она расположена) содержимое файла указанного в качестве параметра этой директивы.
Если в файле, включенном в скрипт с помощью #include, есть return или метка горячей клавиши, то секция автовыполнения закончится на месте этого return или метки горячей клавиши. И строки  

Код:
 
GroupAdd DisableInertMode, ahk_class TTOTAL_CMD  
GroupAdd DisableInertMode, ahk_class ATL:00730608  

никогда не будут выполнены.
 
Всё это есть в справке.
 

Цитата:
А должно?  

Попробуйте почитать справку, пожалуйста.

Всего записей: 304 | Зарегистр. 29-07-2008 | Отправлено: 17:16 08-05-2013 | Исправлено: creature_ws, 17:19 08-05-2013
oshizelly



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
aidomars 16:06 08-05-2013
Цитата:
Возможно дело в persistent, попробуй убери его

Нет, это я и сам уже пробовал. Впрочем, эта директива #persistent здесь, скорее всего, вообще лишняя. Я её убрал, но это ни на что не повлияло: при ручном запуске файла группы учитываются, при запуске через #include - игнорируются.
 
 
creature_ws 16:16 08-05-2013
Цитата:
Директивы #if влияют лишь на нижележащие горячие клавиши.  

Код:
 #If (A_Cursor = "IBeam")

Здесь не к месту.

Случайно попала из другого скрипта  Но на мой вопрос эта ошибка никак не влияет.
 

Цитата:
После запуска скрипт выполняется сверху вниз до return, exitapp или метки горячей клавиши.  
Строки  
GroupAdd DisableInertMode, ahk_class TTOTAL_CMD    
GroupAdd DisableInertMode, ahk_class ATL:00730608    
должны быть выполнены прежде чем вы будете использовать группу с именем DisableInertMode.  
Для этого их нужно поместить, например, в начале файла до первого return или метки горячей клавиши.  
Если в файле, включенном в скрипт с помощью #include, есть return или метка горячей клавиши, то секция автовыполнения закончится на месте этого return или метки горячей клавиши. И строки никогда не будут выполнены.  

Ну да, всё это понятно. А чем эти правила нарушает мой скрипт??
Может, вводит в заблуждение первая строка фрагмента
#Include, D:\My Documents\AutoHotkey - CapsLock suppress.ahk
Я её просто для наглядности привёл, чтобы был понятен контекст. А обсуждаемый скрипт находится в файле D:\My Documents\AutoHotkey - disable Insert key mode (ex in Total Commander and ReGet Delux).ahk (последняя строка приведённого фрагмента). То есть, он "включён" в главный скрипт именно после определения групп.
  

Цитата:
Попробуйте почитать справку, пожалуйста.

Да читал я справку, и не один раз. Сколько в голове откладывается - это другой вопрос. Пока что в мозгу каша, но это же все опытом нарабатывается, а не только (и не столько) чтением справки.

Всего записей: 6524 | Зарегистр. 18-09-2004 | Отправлено: 18:07 08-05-2013 | Исправлено: oshizelly, 18:09 08-05-2013
creature_ws



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
 А чем эти правила нарушает мой скрипт??  


Цитата:
Я её просто для наглядности привёл

Т.е. как выглядит скрипт неизвестно, но вопрос «чем же он неправилен» вы задаёте. Теперь суть ваших вопросов мне понятна, постараюсь не вмешиваться в ваше развлечение.

Всего записей: 304 | Зарегистр. 29-07-2008 | Отправлено: 18:39 08-05-2013
aidomars



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
oshizelly
Вставь в главный скрипт вместо #Include код того скрипта и посмотри где останов происходит и доходит ли выполнение вообще до GroupAdd.

Всего записей: 982 | Зарегистр. 23-04-2007 | Отправлено: 23:02 08-05-2013
oshizelly



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
aidomars 22:02 08-05-2013
Цитата:
посмотри где останов происходит и доходит ли выполнение вообще до GroupAdd.

Не совсем понял, почему сомнение. Ведь строки собственно кода, блокирующего клавишу Insert, расположены НИЖЕ строк, задающих исключения. Следовательно, раз клавиша блокируется, то обработка скрипта доходит до последней строки скрипта.
 

Цитата:
Вставь в главный скрипт вместо #Include код того скрипта

Уже вставлял. Результат такой: при определении исключаемых классов прямо в строке с директивой #IfWinNotActive исключения учитываются:

Код:
#IfWinNotActive, ahk_class TTOTAL_CMD  
{  
Insert::return  
NumpadIns::return  
}

 
Однако исключения игнорируются, если определять их через группы, когда скрипте находится в главном файле:

Код:
GroupAdd DisableInsertMode, ahk_class TTOTAL_CMD  
GroupAdd DisableInsertMode, ahk_class ATL:00730608  
#IfWinNotActive ahk_group DisableInsertMode  
{  
Insert::return  
NumpadIns::return  
}

 
Но если этот же самый скрипт с определением через группы вставить в отдельный файл, то код работает, как ожидалось
 
Была мысль, что, возможно, где-то в другом месте главного файла эта же группа определена по-другому, и как-то возникает конфликт. Но нет, ничего похожего нет.

Всего записей: 6524 | Зарегистр. 18-09-2004 | Отправлено: 00:03 09-05-2013 | Исправлено: oshizelly, 00:06 09-05-2013
aidomars



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Но если этот же самый скрипт с определением через группы вставить в отдельный файл, то код работает, как ожидалось

Противоречит разуму, странно.

Всего записей: 982 | Зарегистр. 23-04-2007 | Отправлено: 13:16 09-05-2013
PREVED



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть ли возможность с помощью autohotkey с определенным интервалом посылать определенному окну(класс окна, заголовок) определенную комбинацию клавиш?

Всего записей: 1988 | Зарегистр. 10-03-2006 | Отправлено: 21:41 09-05-2013 | Исправлено: PREVED, 21:41 09-05-2013
aidomars



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть

Всего записей: 982 | Зарегистр. 23-04-2007 | Отправлено: 15:14 10-05-2013
creature_ws



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В актуальной версии Autohotkey добавлена поддержка Windows Vista+ командам SoundSet, SoundGet etc.

Цитата:
Support for Windows Vista and later was added in v1.1.10.
SoundSet

Всего записей: 304 | Зарегистр. 29-07-2008 | Отправлено: 10:41 11-05-2013
LonerDergunov



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А есть ли способ узнать - какой контрол активный? (класс активного контрола)
Например, есть две кнопки - ОК и Отмена, одна активна (при нажатии на Enter она нажмётся), вторая нет.
Или определить активную панель файлового менеджера.
Или хотя бы как проверить активность из списка известных классов ? (например, известно, что в 32-х битном Тотал коммандере левая панель имеет ClassNN: TMyListBox2, а правая - ClassNN:TMyListBox1. Цель - узнать активную.
 
И второй вопрос (не смог найти в справке).
Есть ли в AutoHotkey аналог Select...Case или единственный вариант - if... else if... else if... ?

Всего записей: 2972 | Зарегистр. 11-07-2007 | Отправлено: 04:30 09-06-2013 | Исправлено: LonerDergunov, 04:38 09-06-2013
aidomars



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LonerDergunov
1. WinGetClass, class, A
MsgBox, Класс активного окна "%class%"
 
2. Вроде нет

Всего записей: 982 | Зарегистр. 23-04-2007 | Отправлено: 10:27 09-06-2013
LonerDergunov



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
aidomars
Спасибо, но немного не то. Класс не окна, а активного контрола.
Ночь темна и полна ужасов   , столько искал и нового узнал..., а утром сразу нашёл в справке - команда ControlGetFocus

Всего записей: 2972 | Зарегистр. 11-07-2007 | Отправлено: 13:06 09-06-2013
aidomars



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А ну да, сбил с толку Тотал коммандер

Всего записей: 982 | Зарегистр. 23-04-2007 | Отправлено: 15:54 09-06-2013
oshizelly



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Решил попробовать в качестве альтернативного решения запускать скрипты из нескольких AHK-файлов через батник .BAT. Однако если скрипт уже запущен, то, как известно, AHK выдаёт запрос на подтверждение перезапуска. Как в параметрах командной строки указать, чтобы запрос не выдавался или чтобы автоматически отвечалось "Yes"? Искал ответы на офф-форуме и в Гугле, но нашёл только массу советов по передаче скрипту параметров командной строки запускаемой проги, а это совсем не то...
 
И ещё (возможно, немного офф-топ, но уж заодно спрошу) : после запуска скрипта окна командного процессора остаются висеть, приходится закрывать их потом вручную. Можно ли как-то сделать, чтобы они закрывались автоматически?
 
Спасибо!

Всего записей: 6524 | Зарегистр. 18-09-2004 | Отправлено: 11:27 10-06-2013
LonerDergunov



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
oshizelly

Цитата:
запускать скрипты из нескольких AHK-файлов через батник .BAT. Однако если скрипт уже запущен, то, как известно, AHK выдаёт запрос на подтверждение перезапуска

Если одновременно несколько разных AHK запускать - то ничего не должно выдаваться. А вот если один и тот же скрипт несколько раз запускать - то для регулировки поведения есть директива #SingleInstance.
 

Цитата:
окна командного процессора остаются висеть, приходится закрывать их потом вручную.

Это про консоль речь? Вызывать её с параметром /k (ошибся) /c
cmd.exe /k (или %comspec% /k )  cmd.exe /c (или %comspec% /c )

Всего записей: 2972 | Зарегистр. 11-07-2007 | Отправлено: 13:46 10-06-2013 | Исправлено: LonerDergunov, 01:22 11-06-2013
oshizelly



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LonerDergunov 12:46 10-06-2013
Цитата:
Это про консоль речь? Вызывать её с параметром /k  
 cmd.exe /k (или %comspec% /k )

Прошу прошения, не въехал. Если сейчас строка в батнике выгляди, допустим, так:

Код:
start "C:\Program Files\AutoHotkey\AutoHotkey.exe" "D:\My Documents\AutoHotkey.ahk"

то куда надо воткнуть эти буковки  cmd.exe /k ?

Всего записей: 6524 | Зарегистр. 18-09-2004 | Отправлено: 16:22 10-06-2013
LonerDergunov



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
oshizelly
%comspec% /k start ......
Хотя в данном случае start вообще не нужен, достаточно просто:
"C:\Program Files\AutoHotkey\AutoHotkey.exe" "D:\My Documents\AutoHotkey.ahk"

Всего записей: 2972 | Зарегистр. 11-07-2007 | Отправлено: 17:25 10-06-2013
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76

Компьютерный форум Ru.Board » Компьютеры » Программы » AutoHotkey


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru