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

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



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vadim3sh 20:00 21-09-2014
Цитата:
Может, я просто нужный раздел не нашел?
По-видимому.

Всего записей: 100 | Зарегистр. 08-07-2011 | Отправлено: 20:34 22-09-2014 | Исправлено: OnMyDSeeAtAll, 20:36 22-09-2014
vadim3sh



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OnMyDSeeAtAll
Fu...k! И раздел, и весь сайт! А ведь говорили великие люди дуракам: "читайте первоисточники"!
Спасибо !

Всего записей: 457 | Зарегистр. 28-01-2006 | Отправлено: 05:23 23-09-2014
thejustsoul



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Посоветуйте самый нормальный "создатель макросов" под AHK, находил несколько, но чет они корявые какие-то.  
Приглянулся этот, X-Macro Recorder v2.0.2 (XMR2.0.2.ahk) (тут зеркало), но у него есть минус, он не видит русские буквы.  
 
Если записывать например порядок: открыть блокнот, написать по-английски, поменять раскладку, написать по-русски, потом все это воспроизвести, и в итоге обе строки будут на английском -(
 
Подскажите пожалуйста, как добавить поддержку кириллицы в этот рекордер?
 
Если что, код этого рекордера:
Подробнее...

Всего записей: 1789 | Зарегистр. 30-03-2014 | Отправлено: 22:04 30-09-2014 | Исправлено: thejustsoul, 22:19 30-09-2014
OnMyDSeeAtAll



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

Цитата:
...как добавить поддержку кириллицы в этот рекордер?
В функции KeyboardRecord (599 линия кода) меняем содержимое строк на:
Код:
;         Hotkey, ~*$%A_LoopField%, KeyBoardRecord, %State% UseErrorLevel
;         Hotkey, ~*$%A_LoopField% Up, KeyBoardRecord, %State% UseErrorLevel
     
Hotkey, % FormatKeyVK(GetKeyVK(A_LoopField)), % "KeyBoardRecord", % State " UseErrorLevel"
     
Hotkey,
% FormatKeyVK(GetKeyVK(A_LoopField))" Up", % "KeyBoardRecord", % State " UseErrorLevel"
Добавляем ещё функцию в конец кода:
Код:
FormatKeyVK(p)
{
   
Static
sSfx:=A_IsUnicode ? "W":"A"
   
   
; http://msdn.microsoft.com/en-us/library/windows/desktop/ms647550(v=vs.85).aspx
   
DllCall
("wsprintf"sSfx, "Str", res:="ahk4rever"
                         
, "Str", "~*$vk%X"
                         
, "UInt",
p
                         
, "Cdecl")
   
Return,
res
}

Всего записей: 100 | Зарегистр. 08-07-2011 | Отправлено: 16:09 01-10-2014
thejustsoul



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OnMyDSeeAtAll
Большое спасибо, все работает!  
Маленький вопрос, а рекордеры вообще проверяют в какой раскладке они записывают и вводят? Т.е. если записано все в англ. раскладке, но при воспроизведении, в блокноте например, стоит рус. раскладка, то введется на русском (=инвертировано, т.е. не как задумывалось). Или это потом руками в макросе редактировать (искать отдельно функцию проверки если такая есть вообще и прописывать)?
 
И вообще мелкий вопрос, в коде выше в строке:
%State% UseErrorLevel  
а в исправленном:  
% State " UseErrorLevel"
"%" не хватает после State или так и должно быть?

Всего записей: 1789 | Зарегистр. 30-03-2014 | Отправлено: 19:03 01-10-2014 | Исправлено: thejustsoul, 19:08 01-10-2014
OnMyDSeeAtAll



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

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

Всего записей: 100 | Зарегистр. 08-07-2011 | Отправлено: 23:07 01-10-2014
thejustsoul



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

Цитата:
Об этом можно почитать в обзаце Чтение содержимого переменных русской справки.

Теперь ясно, спасибо еще раз.

Всего записей: 1789 | Зарегистр. 30-03-2014 | Отправлено: 09:09 02-10-2014
ZevSforum

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Ребят, токо увидел такую прогу, случайно, офигеть класс. Изучил много чего, даже получилось как на первый раз ). Но есть вопросы.
 
У меня при сканировании, надо нажать 5 разных кнопок прежде чем запускается сканирование.
Так вот, в проге когда она жмет кнопки по очереди что я вписал, каждый раз окно становится активным (появляется на передний план), то есть параллельно что-то делать в этот момент - нереально, ибо окно вылазит постоянно.  
 
Вопрос:  
1. Есть-ли команда, чтобы все действия выполнялись в фоне, не активируя каждый раз окно на передний план??  
2. Есть ли такая же команда для открытия новых окон, чтобы они открывались тоже в фоне?
 
3. И еще. Одну кнопку никак немогу забить на выполнение. Просто апздец. Я правда обошел ее, заманухами умными, но это муторно, и все-же интересно в чем трабла.
Скрин -  
   
 
Команда:

Код:
ControlClick CMyBmpButton2_Class10, ScanGear  

- ее не активирует . Хотя кнопка настройки которая рядом и имеет название "Button10" - активируется, значит все гуд, окно прога видит. Че за название такое умное у кнопки? Как ее прописать?

Всего записей: 656 | Зарегистр. 11-09-2003 | Отправлено: 03:36 03-10-2014 | Исправлено: ZevSforum, 04:16 03-10-2014
thejustsoul



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, как написать скрипт, чтобы он передавал любые переданные ему параметры в запускаемую программу.. Т.е. например такой маленький скрипт для запуска ФФ в портативном режиме:

Код:
#NoTrayIcon
#NoEnv
RunWait, "%A_ScriptDir%\firefox.exe" -profile "%A_ScriptDir%\profile"
Return
 

Если его запустить как "script.ahk param1 -param2 -other_param3", то он не передает их программе, а надо чтобы можно было передать любые в любом кол-ве, подскажите как?

Всего записей: 1789 | Зарегистр. 30-03-2014 | Отправлено: 14:52 05-10-2014
Krot66



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

Всего записей: 1254 | Зарегистр. 10-12-2007 | Отправлено: 19:30 05-10-2014
thejustsoul



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Krot66
Я не просил давать ссылки на сайты, а попросил конкретное решение вопроса (этот материал я уже читал до того как спрашивать, и не только его, и там нет ничего, что бы мне помогло (я не спец в AHK), больше 3 часов гугления тоже не дало никакого результата. Все, что находил, не работало.
 
Раз уж вы нашли эту страницу (и считаете, что она поможет), помогите с решением вопроса?
 
Вопрос для знающих AutoHotKey, я уверен очень простой, всего лишь нужно определить, есть ли передаваемые параметры\аргументы скрипту и если есть запустить программу со всеми переданными параметрами (как есть), если нет, то запустить без параметров.

Всего записей: 1789 | Зарегистр. 30-03-2014 | Отправлено: 20:12 05-10-2014
Krot66



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
thejustsoul
Параметры передаются скрипту в виде переменных %1%, %2% и пр. Их и надо использовать в Run
P.S. И спокойнее надо быть - здесь вам никто ничего не должен

Всего записей: 1254 | Зарегистр. 10-12-2007 | Отправлено: 12:13 06-10-2014
thejustsoul



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Krot66
Как передать эти параметры в саму программу, что передаются скрипту? Конкретный пример можете привести на основе моего вопроса? Или опять скопируете откуда-нибудь невпопад что-то отдаленно похожее, найденное в гугле за 2 минуты?
 

Код:
RunWait, "%A_ScriptDir%\firefox.exe" -profile "%A_ScriptDir%\profile" "%1%" "%2%" "%100500%"
 
Run, "%A_ScriptDir%\firefox.exe" -profile "%A_ScriptDir%\profile" %1% %2% %100500%

 
Так вы имеете в виду? Все уже перепробовал (в меру своих знаний AutoHotKey), что находил, с условиями тоже пробовал: If 0 = 0 и If %0% > 0, не передаются программе они.  
 
P.S.

Всего записей: 1789 | Зарегистр. 30-03-2014 | Отправлено: 12:54 06-10-2014 | Исправлено: thejustsoul, 12:55 06-10-2014
Krot66



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
thejustsoul
Мешанина в синтаксисе. Одинарные кавычки экранируют знаки переменных, превращая их просто в знак процента. И проще через относительные пути
 

Код:
SetWorkingDir %A_ScriptDir%
Run firefox.exe ""-profile profile"" ""%1%"" ""%2%"" ""%100500%""

Детали - в описании команды Run

Всего записей: 1254 | Зарегистр. 10-12-2007 | Отправлено: 22:28 07-10-2014 | Исправлено: Krot66, 22:34 07-10-2014
thejustsoul



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Твою же дивизию, откуда же я мог знать, что скрипты написанные на AutoHotKey не передают параметры (кроме тех, что прописаны в коде) другим программам если их не скомпилировать.
Скомпилировал скрипт и все стало передаваться как и задумывалось.. Зря только отвлекал вас, да и сам столько времени потратил -(
 
Krot66
Нашел тут как передать параметры, если их будет неизвестное кол-во, вот код (уже весь скрипт):

Код:
 
#NoTrayIcon
#NoEnv
 
SetWorkingDir %A_ScriptDir%  
 
Loop %0%
  params .= %A_Index% . A_Space
If params !=
  Run, firefox.exe "-profile profile" %params%
Else
  Run, firefox.exe "-profile profile"
Return
 

 
Посмотрите пожалуйста, если не затруднит конечно, тру код или где что не хватает/лишнее?
 
  params .= %A_Index% . A_Space  
 
это так понял разделитель параметров, пробелом, а что если нужно в кавычки заключить каждый передаваемый параметр, так делать?
  params .= """" . %A_Index% . """" . A_Space  
или есть какое-то специальное слово, обозначающие кавычки (A_Space типа этого, только для кавычек)..?

Всего записей: 1789 | Зарегистр. 30-03-2014 | Отправлено: 00:31 08-10-2014 | Исправлено: thejustsoul, 00:33 08-10-2014
user7c7



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
На маке у меня "умный" shift. Шлет Esc, когда нажат отдельно, и работает как обычный shift в сочетании с другими клавишами. Может ли такое AHK?
 

Всего записей: 90 | Зарегистр. 22-08-2011 | Отправлено: 12:14 09-10-2014
DoctorLans

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Господа, нужно чтобы скрипт выполнятся по горячей клавише только в окне диалога Миранды (диалога с любым человеком).
 
С помощью Window Spy узнал, что ahk_class #32770
 
Но это оказался слишком обширный класс и под него попадают множество окон различных приложений. Подскажите, как поточнее идентифицировать нужное мне окно? По заголовку не вариант, он формируется динамически <имя_пользователя> - <статус>.

Всего записей: 248 | Зарегистр. 07-10-2006 | Отправлено: 08:56 13-10-2014 | Исправлено: DoctorLans, 08:57 13-10-2014
Krot66



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

Код:
SetTitleMatchMode, 2
#If WinActive("ahk_class #32770") && WinActive("Имя пользователя")
 

Вариант

Код:
SetTitleMatchMode, 2
#If WinActive("ahk_class #32770") && (WinActive("Имя пользователя1") || (WinActive("Имя пользователя2"))
 

Всего записей: 1254 | Зарегистр. 10-12-2007 | Отправлено: 13:22 15-10-2014 | Исправлено: Krot66, 13:25 15-10-2014
DoctorLans

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Krot66
пользователей - добрая сотня. Каждого перечислять не вариант. Уж лучше тогда перечислить статусы, коих десяток ("в сети", "недоступен"). Только почему вы предложили вариант с #IF, почему не с #IfWinActive? В нём же в параметре WinTitle можно ведь указывать "Multiple criteria", типа  
#IfWinActive My File.txt ahk_class Notepad

Всего записей: 248 | Зарегистр. 07-10-2006 | Отправлено: 15:41 15-10-2014
Krot66



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DoctorLans
Потому что #IfWinActive это директива, а #If WinActive - "выражение", которое и позволяет использовать логические операторы

Всего записей: 1254 | Зарегистр. 10-12-2007 | Отправлено: 17:43 15-10-2014
Открыть новую тему     Написать ответ в эту тему

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