a_master |
Отправлено: 17 Июня, 2013 - 18:52:53
|
Прохожий
Покинул форум
Сообщений всего: 4
Дата рег-ции: Июнь 2013
Репутация: 0
|
Смысл как я понимаю ситуацию - искать на поле нужную картинку и если нашли, то обработать событие нажатие клавиши мышки. и Так в бесконечном цикле. Наваял вот такой вот код. Поиск не дает результата.
Помогите найти в чем косяк.
int honey[10][5];
int PosX_0[1], PosY_0[1];
loadimage (#honey[0][0], "C:\terfarm\honey.bmp");
int color, xe, ye;
getdisplay(color, xe, ye);//Узнать разрешение экрана
n: if (findimage(1, #honey[0][0], 16777215, #PosX_0[0], #PosY_0[0], 0, 0, xe, ye, -1)==0)
{
sleep(50);
}
else
{
mousedbl(LEFT, PosX_0[0]+imagewidth(#honey[0][0])/2, PosY_0[0]+imageheight(#honey[0][0])/2, 1, wind);
mouse(LEFT, PosX_0[0]+imagewidth(#honey[0][0])/2, PosY_0[0]+imageheight(#honey[0][0])/2);
}
goto n;
w=window ("Однокласники - Google Chrome", "Chrome_WidgetWin_1", -1)
activate(w);
sleep(500);(Отредактировано автором: 17 Июня, 2013 - 22:07:54) |
|
|
baracuda |
Отправлено: 12 Июля, 2013 - 13:37:29
|
Прохожий
Покинул форум
Сообщений всего: 23
Дата рег-ции: Июль 2013
Репутация: 1
|
Не совсем в тематику но всё же. если клик вызывает новое окно.. но мы не знаем какое
как решить такое ?
window ("? - Google Chrome", "Chrome_WidgetWin_1", -1)
ну а для красоты? там ещё найти изображение и его кликнуть ..
Заранее спасибо за ответ
очень мало расписано с браузером в хелпах..
как передать фокус в адресную строку ?
start ("C:\Program Files\Google\Chrome\Application\chrome.exe"
sleep(2500);
activate(window ("Новая вкладка - Google Chrome", "Chrome_WidgetWin_1", -1));
sleep(2500);
key("www.ru", 1, 1, win wind);
key(RETURN);
sleep(2500);
key("www.ru/www.php", 1, 1, win wind);
key(RETURN);
и ещё, какой оптимальный вариант работы если кликнуть надо где то внизу сайта а для этого надо прокрутить скрол !!!(Отредактировано автором: 12 Июля, 2013 - 17:01:18) |
|
|
baracuda |
Отправлено: 12 Июля, 2013 - 22:08:24
|
Прохожий
Покинул форум
Сообщений всего: 23
Дата рег-ции: Июль 2013
Репутация: 1
|
у меня такое простое решение.
start ("C:\Program Files\Google\Chrome\Application\chrome.exe");
sleep(2000);
activate(window ("Новая вкладка - Google Chrome", "Chrome_WidgetWin_1", -1));
sleep(1000);
key("www.ru", 1, 1, win wind);
key(RETURN);
sleep(3000);
mouse(LEFT, 750, 152);
sleep(3000);
mousetransfer(LEFT, 1271, 85, 1271, 150, 0.02);
//----------
int Image[55][17];
loadimage (#Image[0][0], "C:\tupit.bmp");
sleep(3000);
int x[1], y[1];
sleep(3000);
st: if (findimage(-1, #Image[0][0], 16777215, #x[0], #y[0], 0, 2, wind.widthclient, wind.heightclient, wind)<1)goto st;
mouse(LEFT, x[0]+imagewidth(#Image[0][0])/2, y[0]+imageheight(#Image[0][0])/2+3, 1, wind);
sleep(3000);
В поиске ошибка.. но вопрос в другом, самый удачный способ поиска ошибок ? например на этом примере как можно хотя бы визуально осознать что не так ?
За ответы огромное спасибо |
|
|
Kibor |
Отправлено: 12 Июля, 2013 - 22:18:09
|
Эксперт
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
baracuda пишет: st: if (findimage(-1, #Image[0][0], 16777215, #x[0], #y[0], 0, 2, wind.widthclient, wind.heightclient, wind)<1)goto st;
Я не вижу объявления и инициализации указателя wind
baracuda пишет: key("www.ru", 1, 1, win wind);
Ошибка. Тип переменной указывать в функции не надо. Я в примере просто указал какой тип идет в параметрах.
key("www.ru", 1, 1, wind);
Возможно так будет работать?:
CODE:
start ("C:\Program Files\Google\Chrome\Application\chrome.exe");
sleep(2000);
win wind=window ("Новая вкладка - Google Chrome", "Chrome_WidgetWin_1", -1);
activate(wind);
sleep(1000);
key("www.ru", 1, 1, wind);
key(RETURN);
sleep(3000);
mouse(LEFT, 750, 152);
sleep(3000);
mousetransfer(LEFT, 1271, 85, 1271, 150, 0.02);
//----------
int Image[55][17];
loadimage (#Image[0][0], "C:\tupit.bmp");
sleep(3000);
int x[1], y[1];
sleep(3000);
st: if (findimage(-1, #Image[0][0], 16777215, #x[0], #y[0], 0, 2, wind.widthclient, wind.heightclient, wind)<1)goto st;
mouse(LEFT, x[0]+imagewidth(#Image[0][0])/2, y[0]+imageheight(#Image[0][0])/2+3, 1, wind);
sleep(3000);
|
|
|
|