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

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

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

> Описание: Не передает нажатия мыши в окно при фоновой работе
Kostick
Отправлено: 16 Января, 2022 - 15:19:14
Post Id



Пользователь
Мастер


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




Пытаюсь сделать бота в БДО, но не получается отправлять команды нажатия и перемещения мыши или нажатия клавиш в окно в фоне, хотя если отправлять в другое окно в фоне, например, в окно блокнота, то все работает.
Например, код нажимает раз в 5 секунд клавишу i. В БДО должно открываться окно инвентаря. Вот как работает в блокноте, и как в БДО:(для просмотра ссылки Вам необходимо авторизоваться) Т.е. в БДО при запуске активируется окно БДО, и нажатия передаются, но когда вручную переходишь на другое окно (на видео я нажал на визуальный редактор), нажатия прекращаются.
Единственное, у окна БДО не контрола в отличии от блокнота, поэтому приходится указывать просто имя окна:
[img](для просмотра ссылки Вам необходимо авторизоваться) /img]
[img](для просмотра ссылки Вам необходимо авторизоваться) /img]
Есть ли еще варианты передачи нажатий клавиш и мыши в окно в фоне?
есть функция "activate(wind);", но она активирует окно полностью, и тогда не получится работать в другом окне. Может у вас есть идеи?
Есть видео от Vladimir Borda Работа "Кибор в скрытом окне игры под Фростом", где он показывает код, который сворачивает окно и выводит его уменьшенную копию сбоку, при этом клики в него отправляются. Я попробовал так же, вот что происходит (работа сопровождается повторяющимися звуками ошибки):(для просмотра ссылки Вам необходимо авторизоваться) Вот код:
CODE:
win W_Kib=selectwindow ("Black Desert - 406459");
//win W_Kib=window ("Black Desert - 406459", "BlackDesertWindowClass", -1);

int eX_Kib, eY_Kib;
eX_Kib=W_Kib.widthclient;
eY_Kib=W_Kib.heightclient;

activate(W_Kib);
transparency (0, W_Kib);
visualwindow(0, 0, 0, W_Kib.widthclient, W_Kib.heightclient, 1095, 565, 25, W_Kib);
KIB_1: Key(1, W_Kib, 0, 73, "Клик", 0);
sleep (500);
goto KIB_1;

function Key(int ew, win w, int p1, int c, string k, int p2)
{
pause(p1);
if (ew==0)
{
if (k=="Клик"){key(c); goto hy;}
if (k=="Нажать"){keydown(c); goto hy;}
if (k=="Отпустить"){keyup(c); goto hy;}
}
if (ew==1)
{
if (k=="Клик"){sendkey(c, w); goto hy;}
if (k=="Нажать"){sendkeydown(c, w); goto hy;}
if (k=="Отпустить"){sendkeyup(c, w); goto hy;}
}
hy: pause (p2);
}

Если вместо "selectwindow" использовать просто "window", то окно выводится, но клики так же не передаются:
https://www.youtube.com/watch?v=JX23n80Na-0

(Отредактировано автором: 16 Января, 2022 - 15:30:38)

 
 Top
ivantu
Отправлено: 16 Января, 2022 - 18:11:08
Post Id



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


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




Баг наверное, функция нажатий принимает w вместо W_Kib попробуйте так :

CODE:
win W_Kib=window ("Chrome Legacy Window", "Chrome_RenderWidgetHostHWND", window ("Работа в фоне через визуальный редактор — Яндекс.Браузер", "YandexBrowser_WidgetWin_1", -1));

win w=W_Kib;
 
 Top
Kostick
Отправлено: 16 Января, 2022 - 18:26:08
Post Id



Пользователь
Мастер


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




 ivantu пишет:
Баг наверное, функция нажатий принимает w вместо W_Kib попробуйте так :

CODE:
win W_Kib=window ("Chrome Legacy Window", "Chrome_RenderWidgetHostHWND", window ("Работа в фоне через визуальный редактор — Яндекс.Браузер", "YandexBrowser_WidgetWin_1", -1));

win w=W_Kib;

Я так понял, это не баг, а защита так работает, что только в активном окне приходят команды.
Немного не понял, что мне надо вписывать в скобках после первого "window" и после второго?
 
 Top
Kibor
Отправлено: 16 Января, 2022 - 18:30:37
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




 ivantu пишет:
функция нажатий принимает

функция нажатий принимает любое имя переменной типа win
 
 Top
ivantu
Отправлено: 16 Января, 2022 - 20:04:21
Post Id



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


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




del (Отобразить)

(Отредактировано автором: 16 Января, 2022 - 20:16:36)

 
 Top
Zireael
Отправлено: 16 Января, 2022 - 20:12:22
Post Id



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


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




 Цитата:
то он сам наверное должен подставлять переменные нужные.

Они подставлены как надо
 Цитата:
Key(1, W_Kib, 0, 73, "Клик", 0);

функция принимает переменную
 Цитата:
function Key(int ew, win w, int p1, int c, string k, int p2)

т. е. в функции используется w, но по сути это и есть W_Kib.
 
 Top
ivantu
Отправлено: 16 Января, 2022 - 20:15:16
Post Id



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


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




 Zireael пишет:
т. е. в функции используется w, но по сути это и есть W_Kib.


Проглядел, Вы правы, глаза замылились, нужен перерыв.
 
 Top
Kostick
Отправлено: 17 Января, 2022 - 09:33:10
Post Id



Пользователь
Мастер


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




 Kostick пишет:

Вот код:
CODE:
//win W_Kib=selectwindow ("Black Desert - 406459");
win W_Kib=window ("Black Desert - 406459", "BlackDesertWindowClass", -1);

int eX_Kib, eY_Kib;
eX_Kib=W_Kib.widthclient;
eY_Kib=W_Kib.heightclient;

activate(W_Kib);
transparency (0, W_Kib);
visualwindow(0, 0, 0, W_Kib.widthclient, W_Kib.heightclient, 1095, 565, 25, W_Kib);
KIB_1: Key(1, W_Kib, 0, 73, "Клик", 0);
sleep (500);
goto KIB_1;

function Key(int ew, win w, int p1, int c, string k, int p2)
{
pause(p1);
if (ew==0)
{
if (k=="Клик"){key(c); goto hy;}
if (k=="Нажать"){keydown(c); goto hy;}
if (k=="Отпустить"){keyup(c); goto hy;}
}
if (ew==1)
{
if (k=="Клик"){sendkey(c, w); goto hy;}
if (k=="Нажать"){sendkeydown(c, w); goto hy;}
if (k=="Отпустить"){sendkeyup(c, w); goto hy;}
}
hy: pause (p2);
}


В общем я понял, что все работает, как на видео:(для просмотра ссылки Вам необходимо авторизоваться) Окно сворачивается, нажатия передаются, но это мнимое сворачивание, т.к. мышка двигается по экрану, как при несвернутом окне. Но хотя бы можно смотреть сериалы, не взаимодействуя с экраном. Жаль, с фоновой работой ничего не вышло.

(Отредактировано автором: 17 Января, 2022 - 09:34:15)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 3 (гостей: 3, зарегистрированных: 0)
« Вопросы и решение проблем »


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




Powered by