1255

Автоматизация рутины с AutoHotKey

Здравствуйте! Сегодня я хочу познакомить вас с замечательным инструментом автоматизации под названием AutoHotKey!

С ним вы сможете:

1) Программировать действия мышкой, нажатия клавиш;

2) Быстро заполнять однотипные бланки, формы;

3) Ставить на горячие клавиши заклинания, кастовать их в течение миллисекунд после перезарядки (что бывает критично);

4) Автоматизировать какие-либо рутинные действия и идти пить кофе.


Сразу предупрежу - писать скрипты поначалу очень капризное занятие. Будут такие ситуации, что код почему-то не работает, и вам придется думать полдня где вы совершили ошибку. Листать документацию. Просить помощи в интернете. Проверять синтаксис.

Однако вложенное время окупается с лихвой. При достаточном освоении AutoHotKey сэкономит вам кучу времени и нервов.


В данном посте я дам лишь описание конкретных примеров применения скриптинга на практике и расскажу про те подводные камни, которые не описаны в документации.


Итак, начнем. Ссылка на программу:

https://autohotkey.com/download/ahk-install.exe (3 Мб)


Написание кода ведется в файлах *.ahk, которые редактируются обычным блокнотом.

Создайте текстовый файл и измените его расширение.

Автоматизация рутины с AutoHotKey Autohotkey, Автоматизация, Программирование, Офисные будни, Образование, Длиннопост

Затем откройте его с помощью блокнота. Теперь вы готовы к работе!

Перейдем к практике.

Напишите


F1:: Send Здравствуйте{!}


Сохраните изменения. Запустите скрипт двойным кликом. Встаньте на какое-нибудь текстовое поле и нажмите F1. Первый опыт скриптинга у вас уже есть.

!, #, ^, +  это служебные знаки. Для того, чтобы напечатать их, нужно оформить их скобками.

Для выключения скрипта нажмите на его иконке возле часов, затем Exit.


Краткое введение закончено, дальше пойдут лишь небольшие советы.


1) Добавьте к скрипту

F12:: Suspend, Toggle

, чтобы ставить/снимать его с паузы клавишей F12


2) Чтобы горячая клавиша не блокировалась скриптом и выполняла также свою обычную функцию, пишите ~.

~F3:: Send {Down}


3)

1::

Send {Tab 5}привет{Enter}  ;пять раз таб, привет, энтер

Click 100, 100  ;клик по заданным координатам, отсчитывается слева-сверху

Click, 2  ;клик два раза

Click right  ;клик правой кнопкой

Send {Down}{Left}{Up}

Send {PgUp}{PgDn}

Send {Space}{Del}

Send {b down}

Sleep, 1000  ;зажать b, ждать 1 секунду, отпустить

Send {b up}  

Return  ;конец списка команд, вызываемых кнопкой "1"


Полный список клавиш смотрите в документации. Пуск -> AutoHotKey -> AutoHotKey HelpFile -> Mouse and Keyboard -> Send


4)

^F1::  ;при нажатии на Ctrl+F1

MouseGetPos, X, Y  ;выдаст текущие координаты курсора

MsgBox, %X%, %Y%

Clipboard = %X%, %Y%  ;и скопирует их в буфер обмена

Return


Обратите внимание - по умолчанию координаты отсчитываются от левого верхнего угла активного окна.

Можно заставить скрипт отсчитывать координаты от левого верхнего угла экрана, предварительно прописав:


CoordMode, Mouse, Screen


Вернуться обратно:


CoordMode, Mouse, Window


5) Модификаторы: "^" = Ctrl, "+" = Shift, "!" = Alt.

Send !{Tab}  ;Alt+Tab

Send +{Home}

Send ^{vk56}  ;Ctrl+V


Почему именно {vk56}, а не {v}? Потому что ^{v} будет работать только при английской раскладке, при русской пришлось бы написать ^{м}.

Однако без всего это можно обойтись, обратившись к клавише через ее виртуальный код.


Список наиболее часто используемых виртуальных кодов:


Send ^{vk43} ;Ctrl+C

Send ^{vk56} ;ctrl+V

Send ^{vk58} ;ctrl+X

Send ^{vk41} ;ctrl+A

Send ^{vk5A} ;ctrl+Z

Send ^{vk53} ;ctrl+S

Send ^{vk51} ;ctrl+Q

Send ^{vk57} ;ctrl+W

Send ^{vk52} ;ctrl+R

Send ^{vk42} ;ctrl+B

Send ^{vk4E} ;ctrl+N

Send ^{vk4C} ;ctrl+L


Аналогично, если вы хотите сделать буквенную клавишу горячей, лучше обратиться к ней через ее виртуальный код:


vk56::Send {Click}  ;посылает клик при нажатии на "м" или "v".


Полный список виртуальных кодов клавиш: http://www.kbdedit.com/manual/low_level_vk_list.html


6) Быстро разворачиваем фотографии правильной стороной.

В стандартной утилите просмотра фотографий Windows есть опция "Развернуть картинку"

Автоматизация рутины с AutoHotKey Autohotkey, Автоматизация, Программирование, Офисные будни, Образование, Длиннопост

NumPad1:: Send ^{,}

NumPad2:: Send ^{.}


Обратите внимание, что эти клавиши работают только при английской раскладке.

Английские точка с запятой расположены справа от клавиши "m" и являются отдельными клавишами. Русская точка и запятая находятся слева от шифта и объединены в одну клавишу.

И еще: чтобы нажать Numpad1 и 2, должна гореть лампочка NumLock.


7)

~1::

Loop,

{

If A_Cursor=Unknown

Click

Sleep, 20

If GetKeyState("2","p")=1

Break

}

F12::Suspend, Toggle


При нажатии кнопку 1 скрипт будет посылать клики, если заметит, что курсор принял форму руки. Нажатие кнопки 2 (и непродолжительное ее удерживание) разрывает цикл.

Осторожно, если вы наведете мышь на ссылки браузера при активном цикле, он вам их откроет!


Таким образом я автоматизировал прохождение флеш игры Deanimator.

Достаточно навести мышкой на зомби, и профессор сам стреляет, да еще и со скоростью пулемета!

http://www.de-animator.com/deanimator.swf

Автоматизация рутины с AutoHotKey Autohotkey, Автоматизация, Программирование, Офисные будни, Образование, Длиннопост

8)

1::

MouseGetPos, xpos, ypos

MouseClick, left, 130, 70, , 0 ; [WhichButton , X, Y, ClickCount, Speed, D|U, R]

MouseMove, xpos, ypos, 0

Return


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

Цифры 0 в обоих операторах отвечают за скорость перемещения курсора, то есть мгновенно.

Можно закрепить за клавишей 1 горохострел, за 2 - подсолнух и т.д., и быстро без напряга сажать растения.

(координаты 130, 70 вам, скорее всего, придется поменять. Воспользуйтесь пунктом 4)

Автоматизация рутины с AutoHotKey Autohotkey, Автоматизация, Программирование, Офисные будни, Образование, Длиннопост

9) Допустим, вам нужно поставить звездочку или другой символ в конце каждой строки.

Автоматизация рутины с AutoHotKey Autohotkey, Автоматизация, Программирование, Офисные будни, Образование, Длиннопост

NumPad1::

Send {*}{Up}{End}

Return


Ставим звездочку, переходим вверх, идем в конец строки. Готово!

Если нужно удалить символ в конце каждой строки, пишем:


NumPad1::

Send {Backspace}{Up}{End}

Return


Если нужно удалить два символа:


NumPad1::

Send {Backspace 2}{Up}{End}

Return


10) Нужно щелкать мышью как можно чаще? Не проблема!

Автоматизация рутины с AutoHotKey Autohotkey, Автоматизация, Программирование, Офисные будни, Образование, Длиннопост

~1::

While GetKeyState("1","p")=1

{

Click

Sleep 20

}

Return


Данный скрипт посылает клики каждые 20 мс при нажатой клавише "1".

Или можно так. Посылаем клики до тех пор, пока не будет нажата клавиша "2".


1::

While GetKeyState("2","p")=0

{

Click

Sleep 20

}

Return



Ладно, на этом пока все. Будут вопросы - обращайтесь!

Можно даже сделать так: пишите какие типичные рутинные операции нужно разобрать, и они появятся в следующем посте!


P.S.

/*

Многострочный комментарий.

Для выключения участков кода

*/

Найдены возможные дубликаты

+16

не советую как в посте использовать обычный Send так как если случайно напишите что то типо:

w:: send w

у вас код уйдет в цикл и крашнется винда, так что рекомендую использовать SendInput

раскрыть ветку 3
+4

$w::send w

не вызовет цикла

0

vk57:: ; "W" например. или Ц, без разници

раскрыть ветку 1
0

Menu, Tray, Icon, C:\Windows\system32\shell32.dll, 18

;DetectHiddenWindows, On ;посылает сообщени§ скрытым окнам

;SendMode Input

; ========== НАСТРОЙКИ ПОЛЬЗОВАТЕЛЯ ===============

ConnectName = Odeon2

Login = vlad2

Pass = vlad2

AdapterNum = 2 ; с какого адаптера получать IP (обычно со 2-го)

SleepTime = 1000 ; пауза между коннектами (при неудачной попытке)

; ========== КОНЕЦ НАСТРОЕК ПОЛЬЗОВАТЕЛЯ ==========

/*

IP_Before := A_IPAddress%AdapterNum%

If IP_Before != 0.0.0.0 ; коннект уже есть

{

ExitApp ; конец скрипта

}

*/

Connect:

RunWait, rasdial "%ConnectName%" "%Login%" "%Pass%",, Hide ; коннектимся

IP_After := A_IPAddress%AdapterNum%

If IP_After = 0.0.0.0 ; нет коннекта

{

Sleep, %SleepTime%

Goto, Connect

}

; ========== ===============

Run, E:\Ярлык\Ярлыки\Службы\Odeon.rdp

Up::

ScreenPath:="C:\Users\Home\Desktop\"

FormatTime, FileName, , dd.MM.yy+HH.mm.ss

saveFileTo := ScreenPath . fileName . ".png"

Run, nircmd.exe savescreenshot "C:\Users\Home\Desktop\%fileName%.png" 9 60 293 656

SoundPlay, E:\Portable\LightscreenPortable\App\Lightscreen\sounds\ls.screenshot.wav, wait

WinWaitClose, Odeon — 192.168.6.232 — Подключение к удаленному рабочему столу

Run, rasd

+46

Уважаемый ТС. Я очень ценю ваше стремление к познанию нового ПО, но есть одно но. Работа со скриптами может увлечь далеко не каждого пользователя. Есть гораздо более дружественная программа с более расширенным функционалом. Называется xStarter.

раскрыть ветку 68
+57

Чем лучше?

Я тут за autoit если что)))

раскрыть ветку 38
+19

Плюсую с autoit можно даже напрямую с directx работать

раскрыть ветку 27
+6
Синтаксис данной приблуды очень похож на AutoIT. Уж не знаю, кто с кого списывал. В любом случае, как человек, который автоматизировал работу отдела из сотни сотрудников и кучу сценариев, которые сутками обрабатывались (само собой, падая на голову за день до сдачи) рекомендую и вам, и @netwizard, забить на скриптовые поделки и взять нормальные инструменты, если у вас нет проблем с компиляцией. Я переписал тот же AutoIT на C#, получив удобную (в те времена) библиотеку, которая даже с банальными операциями вроде поиска окна и отправки команд отдельным элементам (ComboBox, ListBox) работала в несколько раз быстрее и надежнее, тогда, как AutoIT могла просто зауиснуть на 762 документе из 30000 в 3 часа ночи. Сейчас же все более распространение получают WPF и UWP, у которых может не быть WinAPI подложки. Такими элементами вы будете управлять только клавиатурой и мышью. Сейчас же существует куча готовых библиотек для автоматизации UI, которые с этим справляются. Опять же, нормальный язык программирования позволит вам раюотать и напрямую с объектами окруэения. Та же операция доюавления звездочки в конце строки решается автозаменой \r\n на *\r\n (впрочем, с этим справится и нормальный текстовый редактор, вроде Notepad++). AutoIT - хороший способ войти в мир автоматизации, не нцжно искать библиотеки, не нужно ставить Visual Studio или, прости хоспади, IntelliJ. Но задерживаться на нем я настоятельно не рекомендую.
раскрыть ветку 2
+1
Согласен, autoit. И как вариант hardcor - lua script
раскрыть ветку 4
0

а можно клик по области хоткею присвоить?

раскрыть ветку 1
+3

Может кому-то пригодится: JitBit MacroRecorder

Отличная простенькая программа.

+2
А еще можно взять клаву\мышь сразу с макросами и настроить через графический интерфейс. Скучнее, затратнее, но быстрее и проще точно.
раскрыть ветку 4
0

Мышь с макросами умеет организовывать циклы? Не сарказм, реально интересно.

раскрыть ветку 3
+1

Ничего лучше и проще Clickermann нет и не будет.

+1

Кстати для совсем чайников есть такая штука Automatic Mouse and Keyboard

0

подскажите пожалуйста

нужны хоткеи для мгновенного клика по заданной области

раскрыть ветку 3
0

Как понять по области? Можно кликнуть по точке внутри некой области


SendMode Input

1::

Click A, B

Return


где A B координаты точки

раскрыть ветку 2
0

с AHK можно познакомится в более игровой среде например в SAMP( San Andersan Multi Player), там это более интереснее применяется

0

А кто подскажет название подобной же программы автоматизации, куда прямо в код можно вставлять куски изображений и она будет их искать на экране ? (т.е. дополнительных функций по распознаванию писать не нужно)

раскрыть ветку 15
+5

Хочешь прохождение Алаваровских игр с поиском предметов автоматизировать?

+1

Кибор, там есть полное визуальное программирование. То есть просто создавать можно рисованными блоками логику. и он в скрипт преобразует.
http://kibor-bot.com/stat/visual-programming.php

+1

Sikuli

раскрыть ветку 12
+9

В нормальном блокноте можно удалить звездочку (иди добавить) заменой: конец строки обозначается как "\n", что бы убрать звездочку в конце нужно заменить "*\n" на "\n" (без кавычек), если добавить, то "\n" заменить на "*\n".

+9

uopilot

раскрыть ветку 5
+5

А вы старый ультимист!

раскрыть ветку 2
+3
Однако спасибо) Не ожидал такого коммента)
+1

она еще прекрасно подходит для RFOnline, и скорей всего других игр

+3

+1. Со времен Ультимы при каче в 8 окон, использую везде. Вот где интуитивный функционал )

раскрыть ветку 1
+1

О времена)))

А сейчас пилот подгоняется под, наверное, любую игру. Я с пилотом в ArchAge играл)))

+5

Про звездочки.

Для работы с текстом есть очень крутой Sublime Text

Вот, например:

раскрыть ветку 2
+2
Не подскажете, как такое сделать? Сам пользуюсь саблаймом, но несколько курсоров ставлю только кликами с нажатым контролом.
раскрыть ветку 1
+2
Выделить несколько строк -> Ctrl + Shift + L
+9

Как показывает практика для 99% простых пользователей использование уже стандартных сочетаний клавиш уже чудо дивное, а использование более продвинутой системы для них - это что-то на уровне установок термоядерного синтеза.

Этот инструмент хорош, но увы простые пользователи его не поймут и дальше продолжат тыкать мышкой, вместо того, чтоб использовать скрипты или даже простое управление с клавиатуры.

раскрыть ветку 1
0

Просто они не понимают преимуществ автоматизации.

+10

В своё время таким образом автоматизировал некоторые моменты в ММО игре, да и не я один таким занимался среди игроков, если интересно могу скинуть видео которое осталось, по сути игра была запущина в 3 окна или больше\меньше и персонажи сами в трёх окнах занимались тем что было прописано в макросе.

раскрыть ветку 6
+10

скидывай, интересно

+3

Так и не скинул. :-/

раскрыть ветку 1
+2

я все еще не теряю надежды

0

В Lineage2 таким образом можно было нехило так ботоводить.

"Сложно, но можно".

Правда это было лет 10 назад...

раскрыть ветку 1
+1

Отлично работает схема в 9 окон. Одно основное, остальные 8 свернуты. И прекрасно в свернутые окна команды отправлялись.

0
Скидывай
+3

Внесу свои 5 копеек. Работа связана с наукой-инженерией и очень удобно использовать привычные обозначения - альфы, беты, подстрочные и надстрочные индексы, поэтому по мере необходимости наполняю скрипт примерно следующего содержания:


!b::

Send β

return


!d::

Send δ

return


!e::

Send ε

return


Здесь !a, !b и тд - Alt + a, Alt + b и тд. Эти комбинации перехватываются и попросту вставляется вставленный в скрит unicode-символ.



Также очень удобно вставлять нижние индексы в ответ на сочетание "_0", "_1" и тд:

:*?:_0::₀

return


:*?:_1::₁

return

раскрыть ветку 22
0

Поясни, пожалуйста, что значит :*?: и ::₁, и на какую клавишу бинд. Буду очень благодарен.

раскрыть ветку 21
+1

Как ты этот пост нашёл-то ... 0_o


Подробно описано, как это работает, здесь https://autohotkey.com/docs/Hotstrings.htm

Поясни, пожалуйста, что значит :*?: и ::₁, и на какую клавишу бинд
Бинд не на клавишу, это бинд автозамены строки (двух символов) "_1" на символ "".Итак:


:*?:_1::₁
* между первыми двумя двоеточиями означает - что автозамена срабатывает без какого-ибо последующего trigger-символа, т.е. как только нажата "1" после "_";
? между первыми двумя двоеточиями означает - что автозамена срабатывает даже внутри слова;

Простейший вариант автозамены выглядит как
::btw::by the way
вместо "btw" он вставит "by the way", здесь, как видно, нет модификаторов * и ? между первыми двумя двоеточиями.

раскрыть ветку 20
+4

"9) Допустим, вам нужно поставить звездочку или другой символ в конце каждой строки."

:%s/$/\*/g - VIM

+2

Насчет звездочек и прочего редактирования текста - поиск/замена с регулярными выражениями позволит это сделать значительно быстрее. Ну или vim с командой norm :) а так согласен, штука крутая, спасала несколько раз

раскрыть ветку 4
+1

Не скажи. Я, например, не знаю как применить регулярные выражения в блокноте.

Если задача простая - набросать небольшой скриптик для меня дело пары секунд.

Я уже наловчился в этом.

Хотя тому, кто наловчился в регулярках, быстрее будет скопировать в питон (или что вы там используете) и применить их, чем сидеть изучать AHK.

раскрыть ветку 3
+2

В Sublime Text многострочное выделение - это самое маленькое что он умеет. https://www.sublimetext.com/3 при том что он работает так же быстро как нотепад, у него такие невероятные способности, что я в нём делаю практически всё что с текстом связано. https://www.youtube.com/watch?v=LrM1r23bBxs

+2

для звездочек регулярки не нужны. есть замечательный текстовый редактор sublime. в котором вы можете ставить столько курсоров сколько нужно. и обрабатывать хоть 50 строк переменной длины с начала или конца одновременно

+1

Notepad++

+2

Должна пойти. Если не идет, пробуйте запустить скрипт от имени администратора.

+2

Навевает воспоминания, когда был пиздюком, AHK очень сильно помогал в SAMP

раскрыть ветку 1
0

аеее, тож писал ахк скрипты для сампа)

+3
То чувство, когда всего одной кнопкой, можешь унижать людей.
Иллюстрация к комментарию
раскрыть ветку 19
+5

Не, нужен чуть другой скрипт. Чтобы когда подводишь к "Ответить" делал клик, вставлял текст, отправлял его и переходил к следующему коменту.

Чтоб всех подряд поливать.

раскрыть ветку 18
0

Дружище, выручи, пожалуйста.

помоги накидать скрипт.
цель повесить на клавишу "Num+" скрипт который отправляет выделенный в проводнике файл на печать на принтер по умолчанию (желательно в свернутом виде без потери фокуса из проводника).

раскрыть ветку 10
0

Всех подряд не получится, пикабу запрещает отправку двух одинаковых комментов подряд. Придётся изменить хотя бы один знак вручную, например)

Или забиндить на другую клавишу чуть-чуть видоизменёный текст)

раскрыть ветку 6
+3

Один программист так все автоматизировал, что забыл как поограммировать

+1

Подскажите как сделать такой скрипт. Сам пытался, но ничего не выходит



в файле содержится например 100 строчек текста



нужно:


выделить 1 строчку


скопировать ее


вставить в нужное место на сайте


подождать 10 сек


нажать кнопку отправить



и.т.д. по кругу

+1

Немного слоу, помогите пожалуйста сделать такой скрипт:
проверяет активно (на переднем плане ли) окно Х, если активно нажимает пробел, если не активно то активирует его и нажимает пробел. Повторяет эти действия пока не выключить\не остановить

раскрыть ветку 4
0

Loop

{

IfWinNotActive, Title

   WinActivate, Title

Sleep 100

IfWinActive, Title

   Send {Space}

}


F12::Pause,Toggle

раскрыть ветку 3
+1

Большое спасибо! вместо тайтла полное название окна, F12 это пауза, как я понимаю? и если я напишу в цикл sleep 300000, то он будет после каждого прохода ждать 5 минут, так?

раскрыть ветку 2
+1

netwizard, подскажи пожалуйста как сделать что бы по завершении выполнения скрипта он тут же начинал работать с самого начала? и как нужно установить количество циклов?

раскрыть ветку 2
+1

Уже не надо, разобрался. Спасибо за пост! Мне это очень помогло!

раскрыть ветку 1
+1

Не за что =)

+1

Когда у нас были аналоговые регистраторы, надо было сделать скрипт для открытия программы. Помог АНК. Он запускался автоматом сам, запускал нужную программу, после чего уже в программе разворачивал сетку для камер на нужный размер, добавлял камеры для просмотра.

На данный момент использую ее для автоматизации работы с роликами на радио. АНК смотрит в рабочей папке файл, если он есть, то переименовывает и кладет в нужное место, где подхватывается проигрывателем. Отработанные файлы складываются в другую папку по месяцу и году

+1

Есть ещё UOPilot - годная программа с простым скриптовым языком. Помню, писал на ней скрипты для зарабатывания ресурсов в игрушках в контакте в своё время, и даже для закликивания голосов на некоторых сайтах в голосовалках, где запоминание голоса от одного человека на сайте убиралось очисткой кэша :)

+1

плюсик автору за работу, сам пишу автоматизацию для игр на кликермане, он значительно проще аутоита и работает через драйвера = не определяется антиботами

+1

Плюсомет

~1::

While GetKeyState("1","p")=1

{

SendInput {w}{d}

Sleep 20

}

Return

раскрыть ветку 5
0

Ахах, действительно =). Только в одной из раскладок, кажется, работать не будет.

Лучше w = vk57, d = vk44.


Ну и пауза между повторениями 20мс - думаю слишком мала.

Движок пикабу, наверное, не будет успевать обрабатывать.

300-500мс в самый раз, думаю.

раскрыть ветку 4
0
  Добрый вечер ТС, не могу найти как сделать для себя скрипт. Что мне нужно.

  Допустим курсор мышки стоит в произвольном положении.
При нажатии кнопки G Курсор переноситься в центр экрана, делает щелчок левой кнопкой и возвращается в исходное положение.
  То есть я не знаю как сделать так чтобы курсор вернулся обратно, где и был до нажатия бинда.
раскрыть ветку 3
+1

Реально ли сделать так что бы ЛКМ быстро нажималась при нажатом капсе а когда отжал он перестаёт кликать?

раскрыть ветку 4
+3

#UseHook

#HotkeyInterval 1

#MaxHotkeysPerInterval 5000


Capslock:: SendInput {LButton}

вроде все правильно написал пользуйтесь на здоровье)) учтите что в играх могут быть защиты от макросов

раскрыть ветку 1
0

Благодарю)

0

Шутаны небось?

раскрыть ветку 1
+1

Всё намного банальнее) Разного рода кликеры очень люблю) Но про шутаны не думал как то)

Нужно попробовать)

+1

@netwizard, как отсылаются комманды?

Интересует вариант через виртуальный драйвер клавы/мыша. Или через виртуальную клавиатуру.

раскрыть ветку 14
+1

Это релализуется через вриуальный HID девайс .

Вот пример : https://github.com/djpnewton/vmulti

раскрыть ветку 7
0

выглядит интересно. Где ж вы раньше были)

раскрыть ветку 6
+1

на счет этого не вкурсе как конкретно работает, но можно заведомо делать через ДЛЛ(процедура DllCall)

раскрыть ветку 1
0

Да я пытался сам реализовать, но понял что увязну надолго и забил. Подключать dll можно и в autoit, он вроде на этом и работает.

+1

Не знаю. Знаю, что он может посылать виртуальные коды клавиш. Это вам о чем-нибкдь говорит?

раскрыть ветку 1
+1

Спасибо, но это не то.

0

Имеется ввиду послать виртуальный код какой-либо клавиши?

Смотрите пост, пункт 5

раскрыть ветку 1
0

нет, имелся ввиду обход защиты, которая чекает как именно происходит нажатие клавиши.

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


Вопрос за давностью лет потерял актуальность, да и решение я уже нашел, и забыл =)

+1
В линейку (lineage 2) много лет назад играл с куда менее навороченным кликером)
+1

Колёсико мыши влево - предыдущий пост, колёсико вправо - следующий пост. Бесценно!

раскрыть ветку 1
+5

клевая мышка. У меня колесико только вверх и вниз

+1

AutoIT наше все!

0

Дочка выломала кнопку на мониторе сделал такой скрипт

скачал и поставил nircmd (как наименее громоздкое решение)

в скрипт

^!l:: Run "C:\Program Files (x86)\nircmd\nircmd.exe" monitor off

и alt+ctrl+l будет выключать моник без задержки! (хоткеи на ярлыках дают задержку в 3 секунды если находится на рабочем столе или в окне проводника, или в окне powershell, но не дают если находится в настройках 10-ки)) )

раскрыть ветку 1
0

Круто!

0

@netwizard, привет.

Вопросик по вводу текста.

Send выводит в редактор заданный большой текст очень медленно(по буквам).
Быстрее можно только через команды Clipboard? или есть другие варианты? Например задержка между буквами регулируется как-то.

раскрыть ветку 2
0

Напиши в начале скрипта

Sendmode Input


Это другой режим ввода, более быстрый. Должно помочь.

раскрыть ветку 1
+1

Спасибо, помогло. Не совсем, конечно, но стало гораздо быстрее. Попробую с буфером памяти поработать, чтоб вообще мгновенно.
Отдельное спасибо за пост в целом. Шикарная вещь этот AHK.
Особенно вызов отдельных  макросов отдельными хоткеями. Пробовал такое в AutoIt найти во время первого знакомства - не получилось. А тут в поиске подвернулось именно то, что доктор прописал.

0
Здравствуйте! Такой вот вопрос. Я перебиваю числа из одной программы в Excel в ручную в определенные ячейки в определенной последовательности и так 1000 раз. Скажите возможно автоматизировать такой процесс?
раскрыть ветку 3
0

Зависит от того, насколько легко можно считать данные из этой программы. Например, в блокноте, если данные расположены по строкам, можно сказать скрипту нажать Home, затем зажать Shift + End, выделится вся строка, которую можно скопировать. Ну или на крайняк - сказать скрипту выделить мышкой отсюда до сюда, скопировать, затем то же, но строкой ниже и т.д.


В экселе легко копировать данные из ячеек, скрипт просто нажимает вправо и последовательно проходит по ним всем.

раскрыть ветку 2
0
Можете написать свой e-mail? Могу с Вами консультироваться при освоении данной программы? А то здесь неудобно писать сообщения.
раскрыть ветку 1
0
Народ, умоляю, помогите. Я в программировании дуб дубом, но мне очень нужен макрос для одной игры (Grim Dawn). Мне нужно, чтобы по нажатии клавиши q, запускалась последовательность клавиш, с задержкой 20мс после каждой. Кто может написать пример скрипта? Я вроде разобрался, что начало должно быть чем-то вроде

q::q
sleep 20ms

а как задать следующую клавишу, я не понимаю
раскрыть ветку 2
+1

vk51::    ;так скрипт будет реагировать и на Q и на Й, а не только на Q

send a

sleep 20

send b

sleep 20

send c

sleep 20

Return

раскрыть ветку 1
0
Благодарю
0
Добрый день, подскажите пожалуйста, возможно ли автоматизировать процесс, т.е. на данный момент дело происходит так: есть макрос в Excel, который преобразует txt файл в excel файл но эт все делается вручную, но так как таких txt фалов много, то уходит много времени, ну не совсем много конечно. .но не удобно, причем каждый преобразованный файл нужно ещё сохранить отдельно
раскрыть ветку 3
0

Если процесс состоит из повторяющихся шагов, то наверняка можно.

раскрыть ветку 1
0
Окей, буду пробовать! Спасибо
0

А какие шаги нужны для такого преобразования? Не разбираюсь в этом, трудно ответить, но наверняка инструментарий AHK может это позволить.

0

@netwizard , а как можно с вами связаться? Есть пару вопросов...

0

Напишите пожалуйста скрипт,когда система задаёт клавишу и оно её само автоматически нажимает.

раскрыть ветку 9
0

Как понять система задает клавишу?

раскрыть ветку 8
0

Только напишите пожалуйста для ЛКМ и ПКМ

0

Типо "Нажмите 2" и оно нажимает 2.Пишит "нажмите 3" оно нажимает 3

раскрыть ветку 6
0

умные люди, подскажите
нужны хоткеи для мгновенного клика по заданной области

0

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

раскрыть ветку 2
0

Попробуй сначала не в играх, а где-нибудь в ворде, например. Когда будет получаться там, перейди на игру. Если там не получается, посмотри коменты к этому посту или к другим, я где-то отвечал почему не работает в некоторых играх.

раскрыть ветку 1
+1

Да, в "окнах" работает. Спасибо большое, всё посмотрю.

0

А есть оболочка для AHK типо как Oscar Mouse Editor, чтобы не руками клавиши писать а мышью накликивать по картинке клавы и клавиши вставали в скрипт?

раскрыть ветку 2
0

Не слышал.

раскрыть ветку 1
0
Перерыл весь инет, не нашел. Выход: купил снова мышь x7 с рук.
0

Подскажите как сделать такой скрипт. Сам пытался, но ничего не выходит


в файле содержится например 100 строчек текста


нужно:

выделить 1 строчку

скопировать ее

вставить в нужное место на сайте

подождать 10 сек

нажать кнопку отправить


и.т.д. по кругу

раскрыть ветку 11
0

F1::


Send {End}+{Home}  ;сначала переходит в конец строки, затем зажимает шифт и переходит в начало

Send ^{vk43}   ;посылает сочетание Ctrl+C


WinActivate, <заголовок окна браузера, узнается с помощью утилиты Window Spy>

WinWaitActive, <заголовок окна браузера, узнается с помощью утилиты Window Spy>

Click <координаты окошка, куда нужно вставить текст>


Sleep 100

Send ^{vk56} ;посылает сочетание Ctrl+V

Click <координаты кнопки Отправить>

WinActivate, <заголовок окна текстового редактора>


Return


Повторяете процедуру. Скорее всего в каких-то местах система не будет успевать реагировать на быстрые действия, посылаемые скриптом. Надо будет вставлять команды Sleep в таких местах.

раскрыть ветку 10
0

правильно сделал код, запятые, скобки, написание координат и прочие спец символы?


F1::



Send {End}+{Home}


Send ^{vk43}



WinActivate, <Блог пользователя (Юрий Жигалов) - МирТесен - Opera>


WinWaitActive, <Блог пользователя (Юрий Жигалов) - МирТесен - Opera>


Click <297,302>



Sleep 100


Send ^{vk56}


Click <249,651>


WinActivate, <*new 16 - Notepad++>



Return

раскрыть ветку 9
0

здравствуйте, хотел узнать можно ли при помощи ahk сделать следующее: в игре warthunder нужно вступать в бой и тут же выходить из него и так повторять в течении часа. думаю есть 2 варианта. первый (а стоит упомянуть, что кнопку "в бой" можно заменить нажатием "энтер") сделать все кнопками.

игра может быть в оконном режиме для слабого пк, в этом окне(игре) залогиниться я могу сам и в игровом лобби запустить скрипт который запустит бой, далее загрука, вход в бой, и выход, ждет загрузку лобби и так по кругу. время на подбор боя почти одинаково (95%) далее все стандартно. требуется нажать:  "энтер" 20секунд задержки "энтер" 20секунд задержки "esc" "вверх" "энтер" "энтер" 15секунд задержки "энтер". этот способ легче, но могут быть сбои тк может увеличиться продолжительность например закидывания в бой и тогда скрипт перестанет работать.

второй вариант: кликать по определенной координате при появлении красной кнопки.

везде на каждом этапе (загрузка боя , лобби и тд) появляется кнопка например "в бой" она красная после нажатия ее идет подбор матча плюс загрузка, после этого еще раз появляется кнопка "в бой" всегда в одном месте, далее еск+вверх+энтер это выход из боя далее все можно делать кнопками+задержка (как в варианте 1)

вопрос - какой вариант тяжелее в реализации какой легче. какой эффективнее на Ваш взгляд? хотел бы разобраться сам, тк понимаю что скрипт не сложный (можно было бы автоматизировать вообще все начиная от ввода логина и тд, но мне это пока не нужно, хотя есть на примете кое что, но нужно разобраться в азах пока) но не откажусь от помощи, если возникнут вопросы в процессе.

заранее спасибо за советы

раскрыть ветку 6
0

В ahk есть такая полезная штука как распознавание экрана.

Я только недавно ей научился, полгода назад.

Можно поставить паузу не 20 секунд, а каждую секунду чекать экран на наличие красной кнопки.


Loop,

{

ImageSearch, xp, yp, 204, 13, 240, 56, *50 TurnIcon.png

Sleep 200

If xp > 0

Break

}


Этот скрипт каждые 200мс проверяет наличие рисунка TurnIcon.jpg

в области экрана (204, 13)-(240, 56).

Если не нашел изображение, то переменным xp и yp присваивается значение null,

цикл повторяется.

Если нашел, то им присваивается значение координат найденного рисунка, которые можно в дальнейшем использовать.

В моем случае мне это не нужно, мне нужен сам факт наличия этой кнопки.

В случае нахождения кнопки переменная хр приобретает значение больше нуля, срабатывает условие выхода из цикла, и выполняются следующие действия.


*50 это строгость поиска. *0 значит что изображение должно идеально совпасть с искомым. Если скрипт находит какие-то левые изображения, значит строгость слишком маленькая. И наоборот.


Кусок скрипта выше - реально используемый мною код для ботоводства одной игры, я просто включаю его и он автоматически фармит мне ресурсы.

раскрыть ветку 5
0

сменил sendplay на sendinput, первые 2 энтера нажимаются, эскейп почемуто нет. что интересно на экране предматчевого лобби он (esc) срабатывает (если меньше сек поставить), а если выпадает по времени ему нажаться уж в бою, то почемуто не работатет.

Скажите, за деньги можете сделать скрипт ? (https://vk.com/id80608207 )

раскрыть ветку 2
0

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



F7::

{

Sendplay {Enter}

Sleep 20000

Sendplay {Enter}

Sleep 20000

Sendplay {Esc}

Sleep 200

Sendplay {Up}

Sleep 200

Sendplay {Enter}

Sleep 200

Sendplay {Enter}

Sleep 15000

Sendplay {Enter}

}

return


но в игре отказывается работать, нажимаю альтФ1 и ничего не происходит. может игра как то блочит выполнение скриптов или я чтото не так сделал?

раскрыть ветку 1
0

подскажи пожалуйста, а как настроить запуск скрипта на время?

например, чтобы каждый понедельник в 7:55 утра включался скрипт

раскрыть ветку 6
+1

Вот есть какие-то инструкции на английском, но там как-то сложно, нет такого простого оператора "в такое-то время запустить скрипт". Я бы просто скачал отдельную программу-планировщик.

раскрыть ветку 2
0

Здравствуйте. У меня вопрос по поводу программы. Не могли бы вы подсказать, как настроить паузу между нажатиями клавиш в режиме записи действий? Пример: в игре совершаю несколько действий, после нужно немного подождать, и продолжить другие действия, но программа в описании скрипта не видит эту паузу. Если есть вообще такая возможность. А если нет, то какие аналоги посоветуете?

раскрыть ветку 1
+1

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

раскрыть ветку 1
+1

ясно, спасибо )

0

Если у тебя Windows, то там есть встроенный планировщик заданий, который может по дате запускать программу. Win+R --> cmd --> schtasks help

0

Может кто подскажет как можно нажимать кнопку в неактивном окне? Это для сбора лута в РФОнлайн.

раскрыть ветку 2
0

это что за РФОнлайн. И какой тут лут? КАКОЙ СЕЙЧАС ГОД?

0

ControlSend, , {Enter}, Clicker Heroes


ControlClick, x100 y300, Clicker Heroes, , left, 0

0

Можно посылать команды в неактивное окно в фоновом режиме?

раскрыть ветку 3
0
раскрыть ветку 2
0

Спасибочки

А сам AutoHot Key не умеет?

Печаль.

раскрыть ветку 1
0

Как реализовать задачу?: Постоянно кликать с коротким интервалом, при зажатой левой кнопке мыши. Всё это дело включать и выключать на среднюю кнопку мыши. Я весь мозг поломал, много вариантов перепробовал, со звуком прокатывает, а вот клик проходит только один.

раскрыть ветку 9