По теме (первому сообщению). Весь вопрос в том, на что указываете. Если вы про браузер, то опять же нужно корректно поставить указатель. Разные браузеры их отображают по-разному, как и разные аналогичные друг другу программы. Я эту кроссбраузерность (и не только) или обход неверного определения контрола, решил сделать следующим способом:
CODE://w - окно с браузером. dispname и browserwidget содержат значения для определения окна. Важно что ориентир делаю на окно а не на контрол.
w = window (dispname, browserwidget, -1);
//wp[30][30] - Скрин рабочей области (контрола) левый верхний угол ВЕРНОГО рабочего поля (контрола) 30 х 30. Файл wp.bmp, заранее сохраненный.
int wp[30][30];
// Заранее подготовил функцию getpath () которая возвращает полный путь к директории с ботом. Важно чтоб был полный путь, так как есть вложенная папка Img.
string path_wp = getpath () + "Img\wp.bmp";
loadimage (#wp[0][0], path_wp);
int wpX[1]; int wpY[1];
//ищу в окне левый верхний угол контрола по изображению wp.bmp
findimage (1, #wp[0][0], 0, #wpX[0], #wpY[0],
w.left, w.top, w.width, w.height, 30, 30, 30, 30, 30, 30, 90, 1, w);
sleep (100);
x = wpX[0];
y = wpY[0];
Теперь у нас есть верные координаты контрола относительно окна. И если мы будем их плюсовать к координатам всех дочерних элементов окна, то нам совершенно пофиг, где и как расположен контрол чем он дышит, как определается и т.д... в разных браузерах и программах. Иными словами работаем с переменными w.left, w.top, w.width, w.height и к каждой координате просто плюсуем соответственно x и y. В Вашем случае код получится такой:
CODE:if(findimage(1, #i_rise[0][0], 0, #px[0], #py[0], 0, 0, w.width, w.height, w)==1)
{
sendmouse(LEFT, px[0]+x, py[0]+y, w);
sleep(rand(2000, 4000));
check_page_reset = 0;
}
Это или поможет, или я не понял суть проблемы.
(Добавление)
И вот еще. Рекомендую определять картинку с учетом погрешностей и кликать не на левый верхний угол картинки, а на ее центр. Попробуйте так:
CODE:if(findimage(1, #i_rise[0][0], 0, #px[0], #py[0],
0, 0, w.widthclient, w.heightclient, 30, 30, 30, 30, 30, 30, 90, 1, w)==1)
{
sendmouse(LEFT, px[0]+imagewidth(#i_rise[0][0])/2, py[0]+imageheight(#i_rise[0][0])/2, w);
sleep(rand(2000, 4000));
check_page_reset = 0;
}
или если воспользуетесь моим способом, то код получится такой:
CODE:if(findimage(1, #i_rise[0][0], 0, #px[0], #py[0],
0, 0, w.width, w.height, 30, 30, 30, 30, 30, 30, 90, 1, w)==1)
{
sendmouse(LEFT, px[0]+x+imagewidth(#i_rise[0][0])/2, py[0]+y+imageheight(#i_rise[0][0])/2, w);
sleep(rand(2000, 4000));
check_page_reset = 0;
}
(Добавление)
Посмотрел видео. Предполагаю, что во второй программе есть контрол, который вписан в другой контрол, который определяется как наш.
Короче способ который я описал выше (с привязкой к окну и определением рабочей области) должен помочь.