Dantes3000 |
Отправлено: 05 Декабря, 2018 - 23:01:35
|
Эксперт
Покинул форум
Сообщений всего: 1489
Дата рег-ции: Июнь 2016
Репутация: 58
|
Rekkon ,
Искать можно так:
CODE:string T="asf@!$!@$ asdkjh iasudh asudh a кликнуть лгрфыв!(*выфрв фы в фыв";
string P;
string R="кликну";
int k=regexsearch(1, #P, T, R);
if(k>0) messagebox("Найдено");
CODE:string Text;
loadsymbolbase ("C:\text_base.sib");
readtext(NUM | RU, #Text, 8, -1, -1, -1, -1, -1, -1, 0, -1, 0, 0, 1920, 1080, -1);
string P;
string R="кликну";
int k=regexsearch(1, #P, Text, R);
if(k>0) messagebox("Найдено");
Но лучше ограничить зону поиска максимально |
|
|
Rekkon |
Отправлено: 05 Декабря, 2018 - 23:13:03
|
Прохожий
Покинул форум
Сообщений всего: 3
Дата рег-ции: Дек. 2018
Репутация: 0
|
Dantes3000 пишет: Rekkon ,
CODE:string Text;
loadsymbolbase ("C:\text_base.sib");
readtext(NUM | RU, #Text, 8, -1, -1, -1, -1, -1, -1, 0, -1, 0, 0, 1920, 1080, -1);
string P;
string R="кликну";
int k=regexsearch(1, #P, Text, R);
if(k>0) messagebox("Найдено");
Но лучше ограничить зону поиска максимально
1) Зону ограничил, спасибо.
2) Код работает!!! Это просто волшебство
3) Но не могу прикрутить код клика ... Чувствую что где-то, что-то упускаю ... прочел форум вдоль и поперек не получается реализовать.
string Text;
loadsymbolbase ("C:\text_base.sib"
readtext(NUM | RU, #Text, 8, -1, -1, -1, -1, -1, -1, 0, -1, 0, 0, 1920, 1080, -1);
string P;
string R="кликну";
int k=regexsearch(1, #P, Text, R);
if(k>0) sendmouse(LEFT, symbolxpos(0), symbolypos(0), -1); |
|
|
konctantin777 |
Отправлено: 14 Декабря, 2018 - 06:26:58
|
Эксперт
Покинул форум
Сообщений всего: 1152
Дата рег-ции: Окт. 2017
Откуда: Архангельск
Репутация: 6
|
Подскажите что легче для процессора- искать в 10и маленьких окошках(зона поиска) по очереди
readtext (RU | MARK, #Text, 8, 1, -1, -1, -1, -1, -1, 0, -1, 366, 523, 428, 543, w);
или выбрать одно большое и искать среди шумов ?
CODE:string Text;
loadsymbolbase ("D:\YandexDisk\Bot\GoW\nox,s\Новая база.sib");
loop()
{
readtext (RU | MARK, #Text, 8, 1, -1, -1, -1, -1, -1, 0, -1, 366, 523, 428, 543, w);//Загружаем базу данных
textout(0, symbolxpos(0)+50, symbolypos(0), Text+" ", 0);
if (regexsearch(-1, #Text, Text, "бою")!=0)
{
sendmouse (LEFT, symbolxpos(0)+366-20, symbolypos(0)+523, w);
pause(1000);
}
} |
|
|
Adomb |
Отправлено: 01 Февраля, 2019 - 19:22:17
|
Мастер
Покинул форум
Сообщений всего: 185
Дата рег-ции: Июль 2015
Репутация: 1
|
Тут такое дело.
Распознавал цифры, убирая пробелы и знаки. Сделал так:
CODE:char hic[21]; string b="--------------------";
int powers;
function pow()
{
int Color_Text[1]; Color_Text[0]=16777215;
strcpy(#ch[0], b); // удаляю прошлые цифры из hic
if (readtext (NUM | MARK, #hic[0], 12, 3, -1, -1, -1, #Color_Text[0], -1, 1, 70, 529, 236, 727, 263, as)>0)
{
deletetext(#hic[0], " " | "-" ); sleep(10);
powers=formatsn(format(#hic[0]));
}
else return 0;
return powers;
}
Совершенно непонятно почему, то долго работает нормально, то ни с того ни с сего именно на команде readtext Кибор вылетет, без ошибок, без всего.
Запускал заново, начинал отлавливать (при отлове и выяснил, что вылетает на readtext) - первый раз функция срабатывает, текст распознаётся, а при втором обращении вылетает.
Вот хоть убейся. Через некоторое время опять начинает работать.
Попробовал так - вынес strcpy из функции.
CODE:char hic[21]; string b="zzzzzzzzzzzzzzzzzzzz"; strcpy(#hic[0], b);
int powers;
function pow()
{
int Color_Text[1];
Color_Text[0]=16777215;
// удаляю прошлые цифры из hic
deletetext(#hic[0], "0 " | "1" | "2" | "3 " | "4" | "5" | "6 " | "7" | "8" | "9" | "z" ); sleep(10);
if (readtext (NUM | MARK, #hic[0], 12, 3, -1, -1, -1, #Color_Text[0], -1, 1, 70, 529, 236, 727, 263, as)>0)
{
deletetext(#hic[0], " " | "-" ); sleep(10);
powers=formatsn(format(#hic[0])); //messagebox(powers);
}
else return 0;
return powers;
}
- вылеты пропали сразу и второй день всё ок. Почему?(Отредактировано автором: 01 Февраля, 2019 - 19:23:50) |
|
|
|