1 (изменено: Artist, 2016-03-29 18:08:22)

Тема: AHK: Активация скрипта по условию

Добрый день.
Вопрос такой.
Открыт сайт с вводом капчи. Открыто несколько браузеров с этим сайтом, при переходе между ними автоматически становиться активной строка ввода. Мне нужно, чтобы каждый раз когда строка активна, скрипт выключался, а когда неактивна, то включался. Как это можно реализовать. И возможно ли?

Вот код скрипта.

Numpad1::
ControlClick, x485 y303, A
return

Numpad2::
ControlClick, x578 y298, A
return

Numpad3::
ControlClick, x684 y295, A
return

Numpad4::
ControlClick, x485 y388, A
return

Numpad5::
ControlClick, x577 y388, A
return

Numpad6::
ControlClick, x679 y385, A
return

Numpad7::
ControlClick, x485 y488, A
return

Numpad8::
ControlClick, x579 y486, A
return

Numpad9::
ControlClick, x681 y489, A
return

NumpadEnter::
ControlClick, x820 y608, A
ControlClick, x818 y631, A
ControlClick, x818 y653, A

return

Numpad0::
ControlClick, x819 y710, A
ControlClick, x821 y672, A
ControlClick, x817 y692, A

return

Вот скриншоты сайта со строкой.

Post's attachments

1.jpg
1.jpg 47.59 kb, 16 downloads since 2016-03-29 

You don't have the permssions to download the attachments of this post.

2

Re: AHK: Активация скрипта по условию

А после каких действий строка становится неактивной? И какие броузеры?

3 (изменено: Artist, 2016-03-29 21:12:45)

Re: AHK: Активация скрипта по условию

Malcev

Если кликнуть в любом месте окна, то строка неактивной становиться. Также когда появляется второй вид капчи, когда надо с помощью мышки кликнуть по нужным квадратам.
Браузеры Хром, Опера, Яндекс, Маззила.

Просто есть на этом сайте два вида капчи. Первый - это самостоятельно вводишь цифры, а второй - это когда нужно с помощью мышки кликнуть по квадратам нужным.

У меня есть скрипт, с помощью которого клыки мышкой я делаю через NumPad. Но когда появляется первый вид капчи, то мне нужно, чтобы он выключался.  Я реализовал это через клавишу CapsLock. Когда она включена - скрипт работает, а когда выключена  - скрипт не работает.

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

4

Re: AHK: Активация скрипта по условию

Тут я вижу только один вариант - искать картинку неактивной строки и при ее нахождении включать горячие кнопки.

5

Re: AHK: Активация скрипта по условию

Malcev пишет:

Тут я вижу только один вариант - искать картинку неактивной строки и при ее нахождении включать горячие кнопки.

А возможно к примеру такое условие реализовать. Так как два вида капчи - то на каждый вид своя кнопка Send, чтобы отправить капчу. Можно ли задать условие, что ищет к примеру картинку кнопки Send первого вида капчи,  а если находит, то скрипт выключается. Если находит картинку кнопки Send второго вида - то скрипт включается

6

Re: AHK: Активация скрипта по условию

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

SetBatchLines -1

#if pict(x, y)
f1:: msgbox картинка нашлась
#if 
return

pict(ByRef x, ByRef y)
{ 
    ImageSearch, x, y, 0, 0, A_ScreenWidth, A_ScreenHeight, 1.png
    return !ErrorLevel
}

7 (изменено: Artist, 2016-03-29 21:51:19)

Re: AHK: Активация скрипта по условию

Malcev

Я с поиском картинки никогда не работал, это для меня темный лес.
Сохранил картинку строки ввода для второго вида капчи. Тогда, когда и нужно, чтобы скрипт включался.
Картинку находится F:\knopka.jpg

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

Post's attachments

knopka.jpg
knopka.jpg 377 b, 3 downloads since 2016-03-29 

You don't have the permssions to download the attachments of this post.

8

Re: AHK: Активация скрипта по условию

Изучайте:
https://autohotkey.com/docs/commands/_If.htm
https://autohotkey.com/docs/commands/ImageSearch.htm
http://www.script-coding.com/AutoHotkey/Functions.html

9

Re: AHK: Активация скрипта по условию

Malcev
Я понимаю, что уже достал наверно всех, создаю постоянно темы и спрашиваю одно и тоже.
Я вроде по чучуть понимаю, но лучше пошагово объяснить, что делать.

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

10 (изменено: Malcev, 2016-03-29 23:46:27)

Re: AHK: Активация скрипта по условию

#if означает что горячие кнопки будут работать только при условии.
У нас условие - положительное возвращение функции pict(x, y)
Вам надо вставить ваши горячие кнопки между блоками #if и изменить путь к картинке - "1.png" (означающий, что картинка лежит в одной папке вместе со скриптом) на свой.

11

Re: AHK: Активация скрипта по условию

Malcev
Так надо было все это сделать?

SetBatchLines -1

#if pict(x, y)

F2:: msgbox картинка нашлась

Numpad1::
ControlClick, x485 y303, A
return

Numpad2::
ControlClick, x578 y298, A
return

Numpad3::
ControlClick, x684 y295, A
return

Numpad4::
ControlClick, x485 y388, A
return

Numpad5::
ControlClick, x577 y388, A
return

Numpad6::
ControlClick, x679 y385, A
return

Numpad7::
ControlClick, x485 y488, A
return

Numpad8::
ControlClick, x579 y486, A
return

Numpad9::
ControlClick, x681 y489, A
return

NumpadEnter::
ControlClick, x820 y608, A
ControlClick, x818 y631, A
ControlClick, x818 y653, A

return

Numpad0::
ControlClick, x819 y710, A
ControlClick, x821 y672, A
ControlClick, x817 y692, A

return

#if 
return


pict(ByRef x, ByRef y)
{ 
    ImageSearch, x, y, 0, 0, A_ScreenWidth, A_ScreenHeight, F:\Script\knopka.jpg
    return !ErrorLevel
}

12

Re: AHK: Активация скрипта по условию

Так что-то скажет, так надо сделать?
Вообще помочь мне может кто-то?

13

Re: AHK: Активация скрипта по условию

А что не работает?

14

Re: AHK: Активация скрипта по условию

Malcev
Да я не знаю, работает он или нет вообще. Ничего не происходит. При нажатии F2 никакого сообщения не появляется

15

Re: AHK: Активация скрипта по условию

Если выдаст 2, то неправильный путь к файлу, если 1, то картинка не находится.

SetBatchLines -1

#if pict(x, y)
F2:: msgbox картинка нашлась
return
#if 

pict(ByRef x, ByRef y)
{ 
    ImageSearch, x, y, 0, 0, A_ScreenWidth, A_ScreenHeight, F:\Script\knopka.jpg
    msgbox % errorlevel
    return !ErrorLevel
}

16

Re: AHK: Активация скрипта по условию

Malcev
Выдает 2, но путь указал вроде как в примерах.
Как тогда нужно правильно указать?

17

Re: AHK: Активация скрипта по условию

F:\Script\knopka.jpg - значит такого файла не существует/

18

Re: AHK: Активация скрипта по условию

Malcev
А если теперь сообщение выдает 0 ?

19

Re: AHK: Активация скрипта по условию

Почитайте справку.

20

Re: AHK: Активация скрипта по условию

Malcev
В общем скрипт заработал, именно так как нужно. Только теперь тормозить все начало, может такое, что он так грузит систему? Так как другие скрипты не грузили, открывал намного больше окон даже, все шустро. А с этим приходиться половину закрывать,чтобы не тормозил

21

Re: AHK: Активация скрипта по условию

Можно попробовать SetBatchLines -1 убрать.
Потом стоит оптимизировать поиск.
Уменьшить размер картинки для поиска.
Уменьшить радиус поиска.

22

Re: AHK: Активация скрипта по условию

SetBatchLines убрал, картинку уменьшила до минимального размера.А как можно уменьшить радиус поиска?
И как еще тогда можно оптимизировать поиск?

23

Re: AHK: Активация скрипта по условию

Изменить координаты, где может появиться картинка относительно активного окна.
Сейчас поиск ведется по всему экрану.
ImageSearch, x, y, 0, 0, A_ScreenWidth, A_ScreenHeight, F:\Script\knopka.jpg

24

Re: AHK: Активация скрипта по условию

Malcev
Вроде быстрей стал работать скрипт. Но есть ли возможность еще лучше оптимизировать его? Так как немного все равно подтормаживает.

#if (pict(x, y) or pict1(x, y))
Numpad1::
ControlClick, x485 y303, A
return

Numpad2::
ControlClick, x578 y298, A
return

Numpad3::
ControlClick, x684 y295, A
return

Numpad4::
ControlClick, x485 y388, A
return

Numpad5::
ControlClick, x577 y388, A
return

Numpad6::
ControlClick, x679 y385, A
return

Numpad7::
ControlClick, x485 y488, A
return

Numpad8::
ControlClick, x579 y486, A
return

Numpad9::
ControlClick, x681 y489, A
return

NumpadEnter::
ControlClick, x820 y608, A
ControlClick, x818 y631, A
ControlClick, x818 y653, A

return

Numpad0::
ControlClick, x820 y711, A
ControlClick, x823 y531, A
return

#if 
return

pict(ByRef x, ByRef y)
{ 
    ImageSearch, x, y, 0, 0, 700, 200, F:\Script\1234.PNG     
    return !ErrorLevel
}
pict1(ByRef x, ByRef y)
{ 
    ImageSearch, x, y, 0, 0, 700, 200, F:\Script\12345.PNG     
    return !ErrorLevel
}


25

Re: AHK: Активация скрипта по условию

Так кто-нибудь подскажет, есть ли способ еще оптимизировать скрипт,чтобы быстрей работал?

26 (изменено: Artist, 2016-04-05 13:11:39)

Re: AHK: Активация скрипта по условию

Картинку уменьшил для поиска, радиус поиска тоже уменьшил. А как сам поиск  еще можно оптимизировать?
Очень нужна подсказка, помощь. Я лучше понимаю на примере.