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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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

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

chum2000

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

   
 
Актуальная версия: AutoHotkey 1.1.32.00 от 24 ноября 2019
 
Официальный сайт | Англоязычный форум | Архивный форум | Русскоязычный форум
Документация (англ.) | Документация и статьи (рус.) | История изменений
 
Подборка полезных скриптов | AutoHotkey + Total Commander
 

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

Всего записей: 505 | Зарегистр. 04-03-2004 | Отправлено: 00:28 02-06-2005 | Исправлено: creature_ws, 15:55 25-11-2019
LonerDergunov



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
И ещё вопросики по синтаксису.
1. Можно ли упростить запись:
if ( Variable1 = "apple" || Variable1 = "banana" || Variable1 = "lemon" )
?
То есть сравнить значение одной переменной с разными строками.
 
2. В новом синтаксисе знак процента можно, а в 2.0 и нужно ставить только перед переменной.
Как правильно записать присвоение переменной значения параметра? В классической записи это выглядит вот так, а как в новой - не пойму.
Variable1 = %1%
И вот такую запись - как осовременить? (убрать двойные проценты вокруг переменной)
WinGet, TCID, ID, ahk_class TTOTAL_CMD
WinGet, Style, Style, ahk_id %TCID%

Всего записей: 2972 | Зарегистр. 11-07-2007 | Отправлено: 21:58 17-04-2015 | Исправлено: LonerDergunov, 22:46 17-04-2015
LonerDergunov



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Можно ли работать в AHK с периодическими дробями?
Например, нужно сравнить, что переменная равна 1/3, то есть что-то наподобие вот этого
if ( Variable1 = 0.(3) )
(этот вариант не работает, а как правильно записать - не знаю).

Всего записей: 2972 | Зарегистр. 11-07-2007 | Отправлено: 04:33 18-04-2015
Skif_off

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

Цитата:
Можно ли работать в AHK с периодическими дробями?

А если просто разделить 1 на 3, что покажет? В AutoIt - 15 знаков после запятой (в документации не нашёл), тогда условие было бы типа такого:

Код:
if ((Variable1 > 0.333333333333332) and (Variable1 < 0.333333333333334))

Или поменьше знаков на всякий случай.

Всего записей: 5829 | Зарегистр. 28-01-2008 | Отправлено: 13:17 18-04-2015
Krot66



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

Цитата:
1. Можно ли упростить запись:  if ( Variable1 = "apple" || Variable1 = "banana" || Variable1 = "lemon" )

If Variable1 contains apple,banana,lemon

Цитата:
WinGet, Style, Style, ahk_id %TCID%

WinGet, Style, Style, % "ahk_id " TCID

Цитата:
Как скопировать всё содержимое текстового поля? (мы знаем имя контролла ClassNN этого поля)

ControlGetText

Цитата:
1) В интерфейсе программы имеется переключатель radio button. Мы знаем его ClassNN. Как узнать - включен ли переключатель (стоит ли в кружочке точечка)?

ControlGet, OutputVar, Cheked  
Скопировать текст из блокнота можно через ControlSend
 
 

Всего записей: 663 | Зарегистр. 10-12-2007 | Отправлено: 13:44 18-04-2015 | Исправлено: Krot66, 13:46 18-04-2015
OnMyDSeeAtAll



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LonerDergunov 16:20 17-04-2015
Цитата:
Например, где-нибудь в блокноте выделена часть текста. Каким образом можно его передать в переменную?
Вы можете использовать Selected из списка команд ControlGet. .
21:58 17-04-2015
Цитата:
1. Можно ли упростить запись:
if ( Variable1 = "apple" || ...
Пара вариантов.
04:33 18-04-2015
Цитата:
if ( Variable1 = 0.(3) )  
 (этот вариант не работает...
Так у меня работает.
Krot66 13:44 18-04-2015
Цитата:
If Variable1 contains apple,banana,lemon
Contains не тот критерий.

Всего записей: 100 | Зарегистр. 08-07-2011 | Отправлено: 15:33 18-04-2015
LonerDergunov



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо
А что на счёт переданных скрипту параметров? Их нужно только двойными процентами обрамлять?
Mode = %1%
или можно как-то по-другому, вот в таком стиле:
Mode = % 1
 
И вот такая ситуация. Нужно выполнить команду 3301, 3302, 3303 в зависимости от переданного параметра (1, 2, 3).
Работает вот такой способ записи:

Код:
Mode = %1%
Mode = % "330" . Mode
SendMessage, 0x433, % Mode,,, ahk_class TTOTAL_CMD

 
Можно ли его "оптимизировать", избавиться от второй строки (а может и от первой).
Вот такой вариант не срабатывает:

Код:
Mode = %1%
SendMessage, 0x433, % "330" . Mode,,, ahk_class TTOTAL_CMD

 
Всё, понял.
SendMessage, 0x433, 330 . Mode,,, ahk_class TTOTAL_CMD

Всего записей: 2972 | Зарегистр. 11-07-2007 | Отправлено: 15:30 19-04-2015 | Исправлено: LonerDergunov, 18:30 19-04-2015
LonerDergunov



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть ли какие лимиты на команду StringReplace ?
У меня на команде
StringReplace, FileList, FileList, % Path, , All
скрипт вываливается если переменная FileList большая.
Цель этой строки - создание списка файлов с относительными путями.
FileList - это список файлов с полными путями.
Path - это путь (например C:\Windows\WinSxS).
Если FileList содержит 60 тысяч строк - скрипт отрабатывает, а если 90 тысяч (порядка 17 Мб) - уже вываливается.
#MaxMem позволяет в переменно до 64 Мб держать. Пробовал увеличивать - не помогает...

Всего записей: 2972 | Зарегистр. 11-07-2007 | Отправлено: 04:26 20-04-2015 | Исправлено: LonerDergunov, 04:27 20-04-2015
creature_ws



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вываливаентся - можно на офф форум запостить лог ошибки, пример скрипта и содержимого path.

Всего записей: 291 | Зарегистр. 29-07-2008 | Отправлено: 05:23 20-04-2015
LonerDergunov



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А отсюда вопрос - как получить лог ошибки? ))

Всего записей: 2972 | Зарегистр. 11-07-2007 | Отправлено: 14:44 20-04-2015
Krot66



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

Цитата:
Есть ли какие лимиты на команду StringReplace ?  У меня на команде  StringReplace, FileList, FileList, % Path, , All

Попробуй использовать RegExReplace, что несколько медленнее.
Можно сделать цикл с построчным разбором переменной и использовать StringReplace в нем

Всего записей: 663 | Зарегистр. 10-12-2007 | Отправлено: 20:05 20-04-2015
MojDodyr



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
привет, подскажите плиз чайнику как просто перезапустить скрипт через 15 сек? команда reload пораждает петлю.. Может както с помощью 2-го вспомогательного скрипта?  
 

Всего записей: 52 | Зарегистр. 31-03-2007 | Отправлено: 21:07 27-04-2015 | Исправлено: MojDodyr, 00:01 28-04-2015
OnMyDSeeAtAll



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как вариант, можно использовать наличие параметра как условие.

Всего записей: 100 | Зарегистр. 08-07-2011 | Отправлено: 18:38 03-05-2015
LonerDergunov



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть ли какой-нибудь надёжный способ отработки команды ControlClick или альтернативы?
В ХР как-то эта команда постабильней работает, а вот в Win 8.1 (или из-за того, что компьютер помощнее) - полный хаос, часто не успевает отработать, иногда даже видно, как контрол нажимается (темнеет, мигает), но самого клика не происходит.
 
Открыто окно, нужно автоматически поставить крыжики в нескольких чекбоксах, нажать кнопочки... Фактически кликнуть мышкой.
ControlClick, % CheckBox1, ahk_class ProgClass
ControlClick, % CheckBox2, ahk_class ProgClass
ControlClick, % CheckBox3, ahk_class ProgClass
Играюсь с Sleep, SetKeyDelay - не помогает, срабатывает когда как, иногда успевает отработать, иногда нет...
 
Предварительный переход на контрол тоже не даёт результата...
ControlFocus, % CheckBox1, ahk_class ProgClass
 
Строка SetBatchLines, -1 прописана.
 
Помогает разве что огромная задержка
SetKeyDelay, 150, 150
и длинные паузы
Sleep, 500
 
Добавлено:



Цитата:
Есть ли какой-нибудь надёжный способ отработки команды ControlClick или альтернативы?

Придумал/нагуглил/адаптировал варианты:
SendMessage, 0x201,,, % CheckBox1, ahk_class ProgClass  ;WM_LBUTTONDOWN=0x201
SendMessage, 0x202,,, % CheckBox1, ahk_class ProgClass      ;WM_LBUTTONUP=0x202
и
ControlSend , % CheckBox1, {Space}, ahk_class ProgClass
 
Но какой из них более "стабильный", "корректный", "предпочтительней"? Может, ещё какие варианты предложите?

Всего записей: 2972 | Зарегистр. 11-07-2007 | Отправлено: 02:57 04-05-2015 | Исправлено: LonerDergunov, 04:09 04-05-2015
creature_ws



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

Всего записей: 291 | Зарегистр. 29-07-2008 | Отправлено: 08:15 17-05-2015 | Исправлено: creature_ws, 09:19 17-05-2015
ph



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый вечер.
Подскажите, как можно реализовать скрипт:
пользователь нажимает на кнопку сворачивания окна и по этому клику должен обновиться экран (рабочий стол), как если бы он нажал на клавишу F4.
Заранее спасибо.

Всего записей: 182 | Зарегистр. 22-08-2002 | Отправлено: 22:00 19-05-2015
OnMyDSeeAtAll



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
2LonerDergunov У меня (w7x64) все описанные варианты работают без нареканий.

2ph
Как-то так.

Всего записей: 100 | Зарегистр. 08-07-2011 | Отправлено: 23:39 20-05-2015
ixet

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приветствую знатоков!
Недавно купил недорогой ультрабук Lenovo M30-70 (проц i3, Win8.1). Машинка так себе, но для командировок с офисными задачами пойдет. Но есть огромный косяк с клавиатурой, из-за чего работать невозможно. С помощью AutoHotKey исправить его, похоже, можно, но умений у меня не хватает. Потому очень прошу помочь.
 
В чем проблема. По умолчанию у всех Lenovo ряд кнопок F1-F12 работает через Fn, но их можно вернуть к нормальному состоянию через BIOS. Но у этого ноута такое извращение касается и ряда клавиш Home, PgUp, PgDown, End. И самое поганое, что с «противоходом», т.е. либо у тебя нормальная F1, либо Home! По-моему, если это офисный ноут, то приоритет должен быть отдан печати, а при скоростной навигации по тексту и наборе текста жизненно необходимы сочетания клавиш Ctrl-Home, Ctrl-Shift-Home и т.д. Попробуйте-ка понажимать последнее сочетание еще и с Fn!
 
Но это еще полбеды. Если у этого ноута переключить BIOS в режим с нормальным функционированием F1-F12, то перестаёт работать сочетание клавиш Ctrl-Home и Ctrl-Shift-Home! Вот такая засада: или жить с кривыми F1-F12, но нормальными Home-End, или нормальные F1-F12, но кривые Home-End и с неработающим Ctrl-Home .  
Думал проблемы в Win8.1, загрузился с LiveCD в WinXP и Win7 – то же самое. Сканировал коды клавиш: каким-то образом при нажатии Ctrl-Home возвращается нажатие Ctrl-Break, хотя без нажатия Ctrl всё нормально.  
Как это победить, х.з. Нигде никакой информации. Только на английском леново-форуме (Ссылка) предложен скрипт для исправления. Скрипт я переделал под свою ситуацию и Fn нажимать теперь не надо. Но для Ctrl-Home скрипт не работает. Сейчас Ctrl-Home работает также как Ctrl-End; Ctrl-Shift-Home как Ctrl-Shift-End. Автор скрипта Ctrl-Home переназначил на Alt-Home, и говорит, что других способов не видит. Но мне это не нравится.  
 
Может всё-таки есть варианты полноценного исправления нажатия Ctrl-Home и Ctrl-Shift-Home? Через какие-нибудь условия например, в таких сложностях я, увы не силён.
 
Прикладываю свой скрипт и отсканированные коды всех вариантов нажатия клавиш.
 

Код:
 
; key codes:  
; ^ Ctrl, + Shift, ! Alt
; 45 Pause, 146 CtrlBreak, 46 ScrollLock, 152 Insert, 147 Home, 14F End, 149 PgUp, 151 PgDn
 
SC045 :: Send {Home}
^SC045 :: Send ^{Home}
+SC045 :: Send +{Home}
^+SC045 :: Send ^+{Home}
 
SC146 :: Send {End}
^SC146 :: Send ^{End}
+SC146 :: Send +{End}
^+SC146 :: Send ^+{End}
 
SC046 :: Send {PgUp}
^SC046 :: Send ^{PgUp}
+SC046 :: Send +{PgUp}
^+SC046 :: Send ^+{PgUp}
 
SC152 :: Send {PgDn}
^SC152 :: Send ^{PgDn}
+SC152 :: Send +{PgDn}
^+SC152 :: Send ^+{PgDn}
 
; проблема: Ctrl-Home работает также как Ctrl-End; Ctrl-Shift-Home как Ctrl-Shift-End  
 

 

Код:
 
Последовательное нажатие клавиш Home, End, PgUp, PgDn
-------------------------------------------------------------------------------------------------------------
13  045         d    5.08    Pause              
13  045         u    0.01    Pause              
03  146         d    1.00    CtrlBreak          
03  146         u    0.00    CtrlBreak          
91  046         d    0.81    ScrollLock         
91  046         u    0.22    ScrollLock         
2D  152         d    0.58    Insert             
2D  152         u    0.22    Insert             
 
Последовательное нажатие клавиш Home, End, PgUp, PgDn  + Fn
-------------------------------------------------------------------------------------------------------------
24  147         d    8.69    Home               
24  147         u    0.14    Home               
23  14F         d    0.48    End                
23  14F         u    0.16    End                
21  149         d    0.45    PgUp               
21  149         u    0.16    PgUp               
22  151         d    0.51    PgDn               
22  151         u    0.14    PgDn               
 
Последовательное нажатие клавиш Home, End, PgUp, PgDn  + Ctrl
-------------------------------------------------------------------------------------------------------------
A2  01D         d    4.34    LControl           
03  146         d    0.20    CtrlBreak          
03  146         u    0.02    CtrlBreak          
03  146         d    0.28    CtrlBreak          
03  146         u    0.00    CtrlBreak          
03  046         d    0.31    CtrlBreak          
03  046         u    0.09    CtrlBreak          
2D  152         d    0.22    Insert             
2D  152         u    0.08    Insert             
A2  01D         u    0.06    LControl    
 
Последовательное нажатие клавиш Home, End, PgUp, PgDn  + Ctrl Fn
-------------------------------------------------------------------------------------------------------------
A2  01D         d    8.16    LControl           
23  14F         d    0.73    End                
23  14F         u    0.11    End                
21  149         d    0.31    PgUp               
21  149         u    0.11    PgUp               
22  151         d    0.31    PgDn               
22  151         u    0.09    PgDn               
A2  01D         u    0.14    LControl           
 
Последовательное нажатие клавиш Home, End, PgUp, PgDn  + Shift
-------------------------------------------------------------------------------------------------------------
A0  02A         d    12.53    LShift             
13  045         d    0.00    Pause              
13  045         u    0.00    Pause              
03  146         d    0.31    CtrlBreak          
03  146         u    0.02    CtrlBreak          
91  046         d    0.31    ScrollLock         
91  046         u    0.09    ScrollLock         
2D  152         d    0.22    Insert             
2D  152         u    0.08    Insert             
A0  02A         u    0.09    LShift             
 
Последовательное нажатие клавиш Home, End, PgUp, PgDn  + Shift Fn
-------------------------------------------------------------------------------------------------------------
A0  02A         d    8.33    LShift             
24  147         d    0.20    Home               
24  147         u    0.09    Home               
23  14F         d    0.22    End                
23  14F         u    0.08    End                
21  149         d    0.25    PgUp               
21  149         u    0.08    PgUp               
22  151         d    0.25    PgDn               
22  151         u    0.08    PgDn               
A0  02A         u    0.14    LShift  
 
Последовательное нажатие клавиш Home, End, PgUp, PgDn  + Shift Ctrl
-------------------------------------------------------------------------------------------------------------
A2  01D         d    5.41    LControl           
A0  02A         d    0.01    LShift             
03  146         d    0.23    CtrlBreak          
03  146         u    0.01    CtrlBreak          
03  146         d    0.34    CtrlBreak          
03  146         u    0.00    CtrlBreak          
91  046         d    0.34    ScrollLock         
91  046         u    0.09    ScrollLock         
2D  152         d    0.23    Insert             
2D  152         u    0.08    Insert             
A0  02A         u    0.06    LShift             
A2  01D         u    0.01    LControl    
 
Последовательное нажатие клавиш Home, End, PgUp, PgDn  + Shift Ctrl Fn
-------------------------------------------------------------------------------------------------------------
A2  01D         d    4.19    LControl           
A0  02A         d    0.03    LShift             
23  14F         d    0.47    End                
23  14F         u    0.08    End                
21  149         d    0.26    PgUp               
21  149         u    0.09    PgUp               
22  151         d    0.23    PgDn               
22  151         u    0.08    PgDn               
A0  02A         u    0.08    LShift             
A2  01D         u    0.00    LControl    
 
 

Всего записей: 54 | Зарегистр. 17-10-2008 | Отправлено: 19:44 14-07-2015 | Исправлено: ixet, 22:12 14-07-2015
ixet

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Появилась идея. Может можно Ctrl-Home реализовать через жесткий переход к первой строке активного окна, типа GoTo?

Всего записей: 54 | Зарегистр. 17-10-2008 | Отправлено: 20:34 15-07-2015
mxzoommax



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть ли тут люди, активно использующие Autohotkey? Расскажите, сильно ли версия L уступает по функционалу AutoIt3? Можно ли продуктивно использовать Autohotkey v2? Есть ли вменяемая документация по второй версии? Использую текущую стабильную версию в работе, но часто сталкиваюсь, с тем, скрипты отрабатывают по разному на разных ОС (win7, win8), и вообще, не очень логичный, запутанный синтаксис в некоторых местах. В связи с этим думаю перейти на AutoIt, или дождаться AHKv2. Целесообразно, как думаете?

Всего записей: 3 | Зарегистр. 04-01-2015 | Отправлено: 20:51 03-09-2015
DJ_URAN



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Други! А как прописать символ ± в программе? Комбинацией или номером спецсимвола?

Всего записей: 254 | Зарегистр. 05-01-2010 | Отправлено: 00:51 11-09-2015
Открыть новую тему     Написать ответ в эту тему

Страницы: 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

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

Имя:
Пароль:
Сообщение

Для вставки имени, кликните на нем.

Опции сообщенияДобавить свою подпись
Подписаться на получение ответов по e-mail
Добавить тему в личные закладки
Разрешить смайлики?
Запретить коды


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

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2018

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru