Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » Как правильно рассчитать экранные координаты когда известны координаты в окне?

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

11. Zireael - 21 Августа, 2021 - 07:48:21 - перейти к сообщению
 Цитата:
Проблема изначально в киборе, который по какой-то причине получает или отдает фейковые 0,0 координаты окна.

Минимальный код выложите, которым проверяли что у окна координаты 0, 0.
12. mattallen - 22 Августа, 2021 - 14:03:37 - перейти к сообщению
 Zireael пишет:
Минимальный код выложите, которым проверяли что у окна координаты 0, 0.
Я чуть выше в ветке выложил полный код здесь тык
13. Zireael - 22 Августа, 2021 - 14:21:44 - перейти к сообщению
В том коде нет вывода координат. С чего взято что они 0, 0?
CODE:
win boxs[1];
boxs[0] = window ("Nox", "Qt5QWindowIcon", window ("Tasya", "Qt5QWindowIcon", -1));
messagebox(format(boxs.left[0])+" "+format(boxs.top[0]));
14. mattallen - 22 Августа, 2021 - 14:48:57 - перейти к сообщению
 Zireael пишет:
В том коде нет вывода координат. С чего взято что они 0, 0?

Из визуального осмотра и сравнения скриншотов до и после события, сделанных командой:
CODE:
screen (#s[0][0], 0, 0, 565, 964, boxs[a]);
15. Zireael - 22 Августа, 2021 - 14:58:12 - перейти к сообщению
Может окон с таким именем и классом несколько. Сколько окон найдётся?
CODE:
win w[5];
int k=window (#w[0], "Nox", "Qt5QWindowIcon", window ("Tasya", "Qt5QWindowIcon", -1));
messagebox("Найдено окон: "+format(k));

И в каких координатах?
16. mattallen - 24 Августа, 2021 - 08:36:33 - перейти к сообщению
 Zireael пишет:
Может окон с таким именем и классом несколько. Сколько окон найдётся?
CODE:
win w[5];
int k=window (#w[0], "Nox", "Qt5QWindowIcon", window ("Tasya", "Qt5QWindowIcon", -1));
messagebox("Найдено окон: "+format(k));

И в каких координатах?
Нашлось 1 окно. Функцию возврата координат окна я в списке функций кибора не увидел. Наверное надо писать свою функцию через api.
17. Zireael - 24 Августа, 2021 - 17:32:24 - перейти к сообщению
 Цитата:
Функцию возврата координат окна я в списке функций кибора не увидел.

В структуре win.
CODE:
win w = window (-1, "Notepad", -1);
if(w)
{
messagebox(format(w.left)+"^t"+format(w.top));
}
else messagebox("Окно не найдено");
18. mattallen - 26 Августа, 2021 - 06:19:59 - перейти к сообщению
 Zireael пишет:
 Цитата:
Функцию возврата координат окна я в списке функций кибора не увидел.

В структуре win.

ОоОоо! Координаты изменились после клика на форму.
Первая итерация 700 / 7(для просмотра ссылки Вам необходимо авторизоваться) Вторая, после клика на форму и рестарта кибора 968 / 624(для просмотра ссылки Вам необходимо авторизоваться) Ошибка локализована, отлично! Спасибо. Осталось понять как её исправить для верного расчета экранных координат в функции из начала треда. тык
19. Zireael - 26 Августа, 2021 - 06:29:13 - перейти к сообщению
 Цитата:
Осталось понять как её исправить для верного расчета экранных координат

После клика нужно сделать небольшую паузу и обновить параметры окна функцией setwindowparam
Либо в переменные записать начальные параметры окна, если именно они нужны.
20. mattallen - 26 Августа, 2021 - 07:12:14 - перейти к сообщению
 Zireael пишет:
 Цитата:
Осталось понять как её исправить для верного расчета экранных координат

После клика нужно сделать небольшую паузу и обновить параметры окна функцией setwindowparam
Либо в переменные записать начальные параметры окна, если именно они нужны.

Не сработал setwindowparam(w). Проверил так:
1) добавил setwindowparam в начало скрипта, добавил setwindowparam через 6 секунд после клика;
2) запустил скрипт, отработал 2 раза с кликом по форме;
3) прервал скрипт;
4) запустил скрипт – не работает (не распознает текст, не находит картинку в указанной области).

В какие переменные, вы имеете в виду? Если во временный файл, то они будут неактуальными, если перед следующим запуском скрипта окно целевого приложения сдвинется.

Powered by ExBB FM 1.0 Final