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

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

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

> Без описания
mattallen
Отправлено: 16 Августа, 2021 - 23:36:34
Post Id



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


Покинул форум
Сообщений всего: 23
Дата рег-ции: Апр. 2021  
Репутация: 0




Всем здравствуйте!
В целевой программе не работают Sendmouse. Появилась идея в основном цикле искать в окнах копий программы нужное изображение, при нахождении изображения в одном из них делать окно активным, отработать через mouse и вернуться в основной цикл поиска по окнам.
Подскажите, пожалуйста,
- как правильно делать окно активным?
- кибор знает координаты найденного изображения в окне, как правильно рассчитать экранные координаты для mouse?
Друзья, заранее спасибо! =)
 
 Top
Zireael
Отправлено: 17 Августа, 2021 - 02:02:51
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4397
Дата рег-ции: Нояб. 2017  
Репутация: 580




CODE:
#define NULL 0
external(INT, "MapWindowPoints", "MapWindowPoints", "User32.dll");

int x = 200, y = 100; // допустим это координаты картинки

win w = window (-1, "Notepad", -1); // окно блокнота
if(w) // если окно найдено
{
int Points[2];
Points[0] = x; Points[1] = y;
MapWindowPoints(formatwi(w), NULL, address(#Points[0]), 1); // пересчитать координаты в экранные

activate(w); // активировать окно
pause(1000);
mousemove(Points[0], Points[1]); // навести курсор
}
else messagebox("Окно не найдено");
 
 Top
mattallen
Отправлено: 17 Августа, 2021 - 17:04:56
Post Id



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


Покинул форум
Сообщений всего: 23
Дата рег-ции: Апр. 2021  
Репутация: 0




 Zireael пишет:
CODE:
#define NULL 0
external(INT, "MapWindowPoints", "MapWindowPoints", "User32.dll");


Всё заработало. Огромное спасибо! Закатив глазки
 
 Top
mattallen
Отправлено: 19 Августа, 2021 - 14:32:08
Post Id



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


Покинул форум
Сообщений всего: 23
Дата рег-ции: Апр. 2021  
Репутация: 0




 Zireael пишет:
CODE:
#define NULL 0;

Возникла проблема.
Если выполнение скрипта остановить и запустить снова, левый верхний угол окна (координаты 0,0) начинает отсчитываться от координат, где был клик мышкой по форме для ввода текста в этом окне.
Перезапуском кибора не лечится. Лечится если закрыть окно целевой программы и снова открыть.
Как сбросить эту глобальную переменную опять в реальные нулевые координаты окна? Помогите.
 
 Top
Zireael
Отправлено: 19 Августа, 2021 - 14:36:31
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4397
Дата рег-ции: Нояб. 2017  
Репутация: 580




Клик мышкой к получению координат никакого отношения не имеет. Ошибка где-то в вашем коде.
 
 Top
mattallen
Отправлено: 19 Августа, 2021 - 14:45:55
Post Id



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


Покинул форум
Сообщений всего: 23
Дата рег-ции: Апр. 2021  
Репутация: 0




 Zireael пишет:
Клик мышкой к получению координат никакого отношения не имеет. Ошибка где-то в вашем коде.

Простите, но я использовать ваш код, в котором изменил название окна на своё. Закатив глазки
(Добавление)
 Zireael пишет:
Клик мышкой к получению координат никакого отношения не имеет. Ошибка где-то в вашем коде.

Screen и saveimage наглядно показывают смещение координаты. Хочу обратить внимание, что клик по кнопке не меняет эту глобальную переменную. Меняет клик по форме для ввода текста.
(Добавление)
1.bmp - результат первой итерации скрипта, 2.bmp - второй.
Скрытый текст:
Для просмотра Вам необходимо авторизоваться и оставить не менее 200 сообщений


Код использовался:
CODE:

#define NULL 0
external(INT, "MapWindowPoints", "MapWindowPoints", "User32.dll");

int s[3000][3000];

win boxs[1];
boxs[0] = window ("Nox", "Qt5QWindowIcon", window ("Tasya", "Qt5QWindowIcon", -1));

//loop(){
for (int a=0; a<sizearray(boxs); a++)
{
activate(boxs[a]); // активировать окно
pause(2000);
mouseleft(262,575,boxs[a]); //click to insert captcha
screen (#s[0][0], 0, 0, 565, 964, boxs[a]);
saveimage(#s[0][0], "E:\Downloads\kibor_set\1.bmp");
}
//} //loop

function mouseleft(int x, int y, win box)
{
int Points[2];
Points[0] = x; Points[1] = y;
MapWindowPoints(formatwi(box), NULL, address(#Points[0]), 1); // пересчитать координаты в экранные
mousemove(Points[0], Points[1]); // навести курсор
mouse(LEFT, Points[0], Points[1]);
}
 
 Top
Zireael
Отправлено: 20 Августа, 2021 - 01:45:17
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4397
Дата рег-ции: Нояб. 2017  
Репутация: 580




CODE:
win boxs[1];
boxs[0] = window ("Nox", "Qt5QWindowIcon", window ("Tasya", "Qt5QWindowIcon", -1));
messagebox(formatwi(boxs[0]));

Запустить этот код, запомнить хендл окна, кликнуть на картинку или куда там делается клик, снова запустить код, скорее всего хендл будет отличаться.
 
 Top
mattallen
Отправлено: 20 Августа, 2021 - 15:47:06
Post Id



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


Покинул форум
Сообщений всего: 23
Дата рег-ции: Апр. 2021  
Репутация: 0




 Zireael пишет:
CODE:
win boxs[1];
boxs[0] = window ("Nox", "Qt5QWindowIcon", window ("Tasya", "Qt5QWindowIcon", -1));
messagebox(formatwi(boxs[0]));

Запустить этот код, запомнить хендл окна, кликнуть на картинку или куда там делается клик, снова запустить код, скорее всего хендл будет отличаться.

Такой же как первоначальный. Идентичное имя. Растерялся
 
 Top
Zireael
Отправлено: 21 Августа, 2021 - 01:46:00
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4397
Дата рег-ции: Нояб. 2017  
Репутация: 580




С блокнотом этот код работает.
 
 Top
mattallen
Отправлено: 21 Августа, 2021 - 14:10:29
Post Id



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


Покинул форум
Сообщений всего: 23
Дата рег-ции: Апр. 2021  
Репутация: 0




 Zireael пишет:
С блокнотом этот код работает.

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


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




Powered by