Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » Kibor + NoxPlayer. Проблема с sendmousetransfer и sendkey.

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

1. tsaradena - 23 Июня, 2018 - 15:56:32 - перейти к сообщению
Добрый день.
Пишу бота под NoxPlayer. Не могу разобраться с работой команд sendmousetransfer и sendkey.

1) sendmousetransfer не работает с настройкой из учебника:
CODE:
sendmousetransfer(LEFT, 50, 340, 50, 150, 0.02, w);

Работает если установить параметр 6 в значение 10 или выше:
CODE:
sendmousetransfer(LEFT, 50, 340, 50, 150, 10, w);

Но при этом происходит прокрутка на несколько экранов, как будто произошел быстрый свайп по экрану.
За что отвечает 6ой параметр и можно ли как-то настроить более плавное перетаскивание мыши?
2) sendkey также как и key вообще не работают.

Помогите разобраться, может кто сталкивался и/или уже решал подобные проблемы?
2. Dantes3000 - 23 Июня, 2018 - 16:05:18 - перейти к сообщению
tsaradena , надо полный код сюда. Если в виз редакторе - лучше файл скинуть.
3. tsaradena - 23 Июня, 2018 - 23:59:35 - перейти к сообщению
 Dantes3000 пишет:
tsaradena , надо полный код сюда. Если в виз редакторе - лучше файл скинуть.


Вот в этом коде НЕ работают команды sendmousetransfer и sendkey:
CODE:
win w_nox=window ("NoxPlayer", "Qt5QWindowIcon", -1);
win w_nox_control=window ("QWidgetClassWindow", "Qt5QWindowIcon", w_nox);
sendmousetransfer(LEFT, 50, 340, 50, 200, 0.02, w_nox_control);
pause(500);
sendkey('a', w_nox_control);


Вот в этом коде работают команды sendmouse, sendmousedown, sendmouseup и sendmousemove:
CODE:
win w_nox=window ("NoxPlayer", "Qt5QWindowIcon", -1);
win w_nox_control=window ("QWidgetClassWindow", "Qt5QWindowIcon", w_nox);
sendmousedown(LEFT, 50, 340, w_nox_control);
sendmousemove(LEFT, 50, 200, w_nox_control);
pause(500);
sendmouseup(LEFT, 50, 200, w_nox_control);
pause(500);
sendmouse(LEFT, 50, 340, w_nox_control);


В игре оба кода должны выполнять одно и тоже, но первый на короче. А если еще учесть, что в Nox можно на нажатие клавиш настраивать много действий (скрипты), то код будет на порядок короче.
4. Dantes3000 - 24 Июня, 2018 - 04:22:21 - перейти к сообщению
tsaradena , а есть какой-то резон именно в контрол свайп делать? Почему не в окне?
5. tsaradena - 24 Июня, 2018 - 06:19:07 - перейти к сообщению
 Dantes3000 пишет:
tsaradena , а есть какой-то резон именно в контрол свайп делать? Почему не в окне?


Да, как оказалось резона никакого нет, но при этом sendmousetransfer и sendkey все равно не заработали.
Более того по какой-то причине перестала работать команда sendmousemove - ругается на 4ый параметр (т.е. на окно). И не важно окне или в контроле. Код не менял...
6. Dantes3000 - 24 Июня, 2018 - 08:06:16 - перейти к сообщению
tsaradena , Может указатель меняется. Попробуй получать его так:
CODE:
win w;
int x, y;
pause(1000);
getmouse(x, y);
w=getwindow(1, x, y); //0 - на окно
7. tsaradena - 24 Июня, 2018 - 08:24:06 - перейти к сообщению
 Dantes3000 пишет:
tsaradena , Может указатель меняется. Попробуй получать его так:
CODE:
win w;
int x, y;
pause(1000);
getmouse(x, y);
w=getwindow(1, x, y); //0 - на окно


Нет, указатель не меняется, по крайней мере предлагаемый вами код всегда возвращает один и тот же указатель. Эти же указатели показывает и Кибор на вкладке Шпион.

Еще добавлю - бот уже много чего умеет, но пока весь код реализовываю на sendmouse и findimage.
В принципе, если разобраться нормально со свайпом, то можно будет реализовать почти всё что захочешь.
Но всегда хочется чего то большего... поэтому вопрос по sendmousetransfer и sendkey остается открыт.

PS: вспомнил почему использую контрол - размер контрола соответствует размеру игры, поэтому проще прописывать клики мыши и готовить картинки для поиска.
8. Dantes3000 - 24 Июня, 2018 - 08:45:41 - перейти к сообщению
а через sendmousedown sendmousemove sendmouseup не получится?
9. Zireael - 24 Июня, 2018 - 09:13:53 - перейти к сообщению
 Цитата:
Более того по какой-то причине перестала работать команда sendmousemove - ругается на 4ый параметр

Функция принимает 3 параметра.
CODE:
sendmousemove (200, 250, wind) - перемещение мыши в указанные клиентские координаты окна.
10. tsaradena - 24 Июня, 2018 - 09:33:53 - перейти к сообщению
 Dantes3000 пишет:
а через sendmousedown sendmousemove sendmouseup не получится?

Да, получается делать свайпы более медленные, чем в sendmousetransfer.

 Zireael пишет:
Функция принимает 3 параметра.

Спасибо, нашел и поправил ошибку.

Если по sendmousetransfer никаких пояснений нет, то буду писать через sendmousedown sendmousemove sendmouseup...
По sendkey вопрос открыт - не получается передавать нажатия забинденных кнопок.

Powered by ExBB FM 1.0 Final