Agent_Cent |
Отправлено: 19 Июля, 2021 - 13:35:54
|
Прохожий
Покинул форум
Сообщений всего: 22
Дата рег-ции: Июль 2021
Репутация: 0
|
Когда работает в активном окне всё работает отлично, но при использовании фонового оно не выполняет функции кода.
По(для просмотра ссылки Вам необходимо авторизоваться) видео автора Vladimir Borda вставил данные с контрола для определения окна по контролу и перед включением ставил мышку на окно куда будут идти действия + ещё использовал sendkey, но и тут бот не реагирует на картинку (Сканирование и при нахождении картинки посылание нажатия в окно).
win w=window ("Nox", "Qt5QWindowIcon", window ("NoxPlayer1 Основа", "Qt5QWindowIcon", -1));
if (w==0){messagebox ("Нету окна"); goto er;}
activate(w);
pause(1000);
int Image_0[21][10];
if (load_images()==-1){messagebox ("Картинки нема"); goto er;}
int Image_2[119][29];
if (load_images2()==-1){messagebox ("Картинки нету"); goto er;}
int x, y;
int u=0;
loop()
{
if(findimage(1, #Image_2[0][0], 0, #x, #y, 0, 0, w.width, w.height, 10, 10, 10, 10, 10, 10, 94, 1, w)==1)
{
sendkey(84, 1, w);
sleep (4000);
}
if(findimage(1, #Image_0[0][0], 0, #x, #y, 0, 0, w.width, w.height, w)==1)
{
sendkey(32, 1, w);
sleep(7000);
}
}
messagebox("Конец");
er:;
function load_images2()
{
if (loadimage (#Image_2[0][0], "D:\Picture\Farm.bmp")<1) return -1;
return 1;
}
function load_images()
{
if (loadimage (#Image_0[0][0], "D:\Picture\Kill.bmp")<1) return -1;
return 1;
}(Отредактировано автором: 19 Июля, 2021 - 13:36:38) |
|
|
Agent_Cent |
Отправлено: 19 Июля, 2021 - 16:07:31
|
Прохожий
Покинул форум
Сообщений всего: 22
Дата рег-ции: Июль 2021
Репутация: 0
|
Поставил LDplayer и картинку уже находит хорошо. В коде нажатие клавиши через sendkey теперь не работает.
sendkey('32', 0, w); Попробовал может двойной клик создаёт, но нет оно видимо просто не отправляет сигнал о нажатии.
CODE
if(findimage(1, #Image_0[0][0], 0, #x, #y, 0, 0, w.width, w.height, w)==1)
{
textout (0, 100, 50, "Картинка нашлась", 0);
sendkey('32' , 0, w);
sleep(6000);
}
}
UPD "Картинка нашлась" выводит нормально. И если поставить вывод текста после sendkey, то текст будет исправно показывать.(Отредактировано автором: 19 Июля, 2021 - 16:08:55) |
|
|
Zireael |
Отправлено: 20 Июля, 2021 - 02:25:25
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Искать картинку нужно в окне, а нажатия отправлять контролу.
CODE:win w = window ("LDPlayer", "LDPlayerMainFrame", -1);
win w2 = window ("TheRender", "RenderWindow", window ("LDPlayer", "LDPlayerMainFrame", -1));
if(w==0){messagebox("Окно не найдено"); goto error;}
if(w2==0){messagebox("Контрол не найден"); goto error;}
if(findimage(1, #Image_0[0][0], 0, #x, #y, 0, 0, w.width, w.height, w)==1) // поиск в окне w
{
textout (0, 100, 50, "Картинка нашлась", 0);
sendkey('32', w2); // отправить нажатие в контрол w2
sleep(6000);
}
error:; |
|
|
Zireael |
Отправлено: 20 Июля, 2021 - 19:37:30
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Возможно что sendkey просто глючное ?
Нет.
Цитата: В блокноте попробовал просто отправлять сигналы sendkey и при перезапуске кода в KIBOR оно перестаёт работать (Исправляет ситуацию перезапуск блокнота).
В win10 при редактировании текста в блокноте к имени добавляется *. Соответственно при повторном запуске кода окно не будет найдено.
CODE:win w = window (-1, "Edit", window (-1, "Notepad", -1));
if(w)
{
sendkey("qwe", w);
}
else messagebox("Окно не найдено"); |
|
|
|