Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

 Страниц (2): « 1 [2]   

> Без описания
baracuda
Отправлено: 12 Июля, 2013 - 22:37:33
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 23
Дата рег-ции: Июль 2013  
Репутация: 1




Не работает, возможно из за нескольких одинаковых изображений.. не может решить какое нажать
(Добавление)
Спасибо за подсказки решил вопрос вот так:

int Image_1[55][16];
loadimage (#Image_1[0][0], "C:\tupit.bmp"Подмигивание;
int PosX_1[512];int PosY_1[512];
findimage(-1, #Image_1[0][0], 0, #PosX_1[0], #PosY_1[0], 0, 0, 1280, 770, -1);
//mouse(LEFT, x[0]+imagewidth(#Image[0][0])/2, y[0]+imageheight(#Image[0][0])/2+3, 1, wind);
mouse (LEFT, PosX_1[0]+1, PosY_1[0]+1, 1, wind);
sleep(3000);

Хотя универсальности это не даёт
 
 Top
Kibor
Отправлено: 12 Июля, 2013 - 23:10:37
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




 baracuda пишет:
Не работает, возможно из за нескольких одинаковых изображений.. не может решить какое нажать
(Добавление)
Спасибо за подсказки решил вопрос вот так:

int Image_1[55][16];
loadimage (#Image_1[0][0], "C:\tupit.bmp");
int PosX_1[512];int PosY_1[512];
findimage(-1, #Image_1[0][0], 0, #PosX_1[0], #PosY_1[0], 0, 0, 1280, 770, -1);
//mouse(LEFT, x[0]+imagewidth(#Image[0][0])/2, y[0]+imageheight(#Image[0][0])/2+3, 1, wind);
mouse (LEFT, PosX_1[0]+1, PosY_1[0]+1, 1, wind);
sleep(3000);

Хотя универсальности это не даёт




Если на экране несколько таких изображений то в первом скрипте неправильно выделена память под координаты:
 baracuda пишет:
int x[1], y[1];


Первый параметр функции поиска указал что ищутся все найденые изображения:
 baracuda пишет:
st: if (findimage(-1, #Image[0][0], 16777215, #x[0], #y[0], 0, 2, wind.widthclient, wind.heightclient, wind)<1)goto st;


Так как первый параметр -1 ищутся все изображения, но память выделена на одно. Функция возвращает тогда не количество изображений а код ошибки переполнения памяти. Проверьте messagebox(findimage(-1, #Image[0][0], 16777215, #x[0], #y[0], 0, 2, wind.widthclient, wind.heightclient, wind));
Коды ошибок findimage
-1 размер масива в который записываются X координаты меньше найденых изабражений
-2 размер масива в который записываются Y координаты меньше найденых изабражений
-3 Область поиска меньше искомого рисунка по X
-4 Область поиска меньше искомого рисунка по Y
Возвращается отрицательное число и программа зависает в цикл.

Во втором цикле вы просто увеличили размер масивов. Поэтому работает.

Если надо найти только одно изображение надо указывать первым параметром 1, если 2 - 2... Если все указывать -1.
 
 Top
baracuda
Отправлено: 12 Июля, 2013 - 23:29:31
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 23
Дата рег-ции: Июль 2013  
Репутация: 1




спасибо за подробные ответы.. единственное не совсем понял как реализовать

int Image_1[55][16];
loadimage (#Image_1[0][0], "C:\Image_2.bmp"Подмигивание;
int PosX_1[512];int PosY_1[512];
findimage(1, #Image_1[0][0], 0, #PosX_1[0], #PosY_1[0], 0, 0, 1280, 770, -1);
mouse (LEFT, PosX_1[0]+1, PosY_1[0]+1, 1, wind);
sleep(10000);

//Вот тут открылось новое окно при клике, а точнее скорее всего попап на котором надо найти картинку(но можно и усложнить одну из 3 картинок)

int Image_0[180][26];
loadimage (#Image_0[0][0], "C:\Image_3.bmp"Подмигивание;
int PosX_0[512];int PosY_0[512];
findimage(1, #Image_0[0][0], 0, #PosX_0[0], #PosY_0[0], 0, 0, 1280, 770, -1);
mouse (LEFT, PosX_0[0]+1, PosY_0[0]+1, 1, wind);
sleep(10000);

ну а дальше после найденной картинки и клика нужно закрыть попап.. но главное окно браузера должно оставаться, там будет опять искать картинку и так по кругу пока есть картинки на главной странице
 
 Top
Kibor
Отправлено: 12 Июля, 2013 - 23:41:48
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




Я не понял в чем проблема...
Как закрыть всплывающее окно? Просто нажать на кнопку закрытия. Мне сложно давать советы не видя задачи.
Я не знаю как открываются окна, в одном месте? В один размер? и т.д.
Искать кнопку закрытия можно тоже по рисунку соответствующему только этому всплывающему окну.
 
 Top
baracuda
Отправлено: 13 Июля, 2013 - 06:24:34
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 23
Дата рег-ции: Июль 2013  
Репутация: 1




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


Как задать параметр win wing которое открылось в процессе работы..
что бы в дальнейшем
.....
....
....
mouse (LEFT, PosX_1[0]+1, PosY_1[0]+1, 1, wind);
 
 Top
Kibor
Отправлено: 13 Июля, 2013 - 07:45:58
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




win wind это указатель (хэндл) на окно. Это простая переменная и узнавать его можно сколько угодно раз с помощью функции
window. В виде параметров этой функции указываем уникальные данные окна указатель на которое мы хотим получить. К примеру если всплывающее окно имеет постоянный уникальный размер или позицию можно искать указатель на него по этим данным.

В данном случае я вообще не вижу смысла искать win каждого всплывающего окна. Зачем?
Если надо только найти изображение в всплывающем окне, нажать на него и закрыть всплывающее окно достаточно найти изображение в пределах окна браузера или экрана если браузер во весь экран, щелкнуть по нему мышкой и отправить браузеру сочетание клавиш alt+f4 для того чтобы закрыть всплывающее окно:
keydown(MENU);
key(F4);
keyup(MENU);

Данный код отправит alt+f4 активному окну, а активным будет всплывающее.

Один момент по использованию четвертого параметра в функции mouse. При установке его в 1 узазывается что перед кликом надо передать фокус окну на который указывает пятый параметр. Если пятый параметр указывает на главное окно браузера а нажать надо во всплывающем четверный параметр должен быть 0.

В последнем приведенном вами коде вообще неправильно применен указатель:
 baracuda пишет:
findimage(1, #Image_1[0][0], 0, #PosX_1[0], #PosY_1[0], 0, 0, 1280, 770, -1);
mouse (LEFT, PosX_1[0]+1, PosY_1[0]+1, 1, wind);

В findimage ищется изображение по всему экрану и в PosX_1[0], PosY_1[0] записываются координаты изображения на экране относительно левого верхнего угла экрана, а в mouse щелчек происходит по таким же координатам только относительно окна на которое указывает wind.

Примерно может быть так:

win wind=window ("Новая вкладка - Google Chrome", "Chrome_WidgetWin_1", -1);
activate(wind);

int Image_1[55][16];
loadimage (#Image_1[0][0], "C:\Image_2.bmp");
int PosX_1[1], PosY_1[1]; //Ищем только одно изображение

int Image_0[180][26];
loadimage (#Image_0[0][0], "C:\Image_3.bmp");
int PosX_0[1], PosY_0[1];//Ищем только одно изображение


n:;
findimage(1, #Image_1[0][0], 0, #PosX_1[0], #PosY_1[0], 0, 0, 1280, 770, wind);
mouse (LEFT, PosX_1[0]+1, PosY_1[0]+1, 1, wind);
sleep(10000);

//Вот тут открылось новое окно при клике, а точнее скорее всего попап на котором надо найти картинку(но можно и усложнить одну из 3 картинок)


findimage(1, #Image_0[0][0], 0, #PosX_0[0], #PosY_0[0], 0, 0, 1280, 770, wind);
mouse (LEFT, PosX_0[0]+1, PosY_0[0]+1, 0, wind);
sleep(10000);

//Закрываем окошко
keydown(MENU);
key(F4);
keyup(MENU);
goto n;
 
 Top
baracuda
Отправлено: 13 Июля, 2013 - 17:57:18
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 23
Дата рег-ции: Июль 2013  
Репутация: 1




Магистр вы великолепны Улыбка спасибо огромное...
 
 Top
Kibor
Отправлено: 13 Июля, 2013 - 21:28:51
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




Всегда рад помочь, особенно если к усвоению прилагают усилия. Дед Мороз
Тема закрыта!
 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 5 (гостей: 5, зарегистрированных: 0)
« Вопросы и решение проблем »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by