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

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

1. Val_027 - 06 Февраля, 2020 - 07:19:20 - перейти к сообщению
n2:win w2=window("туткино окно Windows"Подмигивание;
if(w2!=0)activate(w2);
else
{sleep (500);goto n2;}
w2.leftclient = 0;
w2.topclient = -5;
w2.widthclient = 1920;
w2.heightclient = 1058;
activate(w2);
moveclient(w2); //нашел выставил до этого все норм

int Image[250][250];
int X[1],Y[1];
loadimage (#Image[0][0],"L:\1.bmp"Подмигивание;
int color, xe, ye;
getdisplay(color, xe, ye);

n:if( findimage(1,#Image[0][0],0,#X[0],#Y[0],200,200,1000,1000,w2)>0);
// вот на этом варианте пока что остановился не ищет.
// если картинку совсем небольшую ищу пикселей 25*25 то типа находит но явно не то
// или крут по кругу бегает не находит. Подскажите как с этим бороться /искать/.
// через UIpilot раньше искал находил, типа какой о опыт есть а тут никак беда....


//n:if(findimage(1,#Image[0][0],0,#X[0],#Y[0],700,700,990,999,99,99,99,99,99,99,90,1,w2)>0);
//n: if (findimage(1, #Image[0][0],0,#X[0],#Y[0],700,700,990,999,25,25,25,25,25,25,90,1,w2)>0);
//n: if(findimage(1,#Image[0][0],0,#X[0], #Y[0],800,700,1000,1000,w2)==0);
//n: if (findimage(1, #Image[0][0], 255, #X[0], #Y[0], 0, 0, xe, ye, -1)==0);
{sleep(100);goto n;}


//mousemove(946,967,w2);
mousemove(X[0], Y[0],w2);
messagebox(X[0]);


//findimage(-1, #image[0][0], fon_color, #x[0], #y[0], x_start, y_start, x_finish, y_finish, wind);
//Второй - указатель на масив int в котором хранится искомое изображение.
//Третий - фоновый цвет который не учитывается при сравнение изображений. Если указать -1, все цвета учитываются. В виде фонового цвета можно указать цвет конкретного пикселя искомой картинки - image[0][0] (цвет левого верхнего пикселя)... и т.д.
//Четвертый и пятый - указатели на одномерные масивы int, в которые будут сохранены координаты найденых в окне изображений.
//Шестой и седьмой - стартовые клиентские координаты в окне в котором ищется изображение относительно верхнего левого угла.
//Восьмой и девятый - клиентские координаты окончания поиска в окне в котором ищется изображение.
//Десятый - указатель на окно в котором ищем изображение. При -1 ищется по всему экрану.




//n:if(findimage(1,#Image[0][0],0,#X[0],#Y[0],700,700,990,999,99,99,99,99,99,99,90,1,w2)>0);
//findimage(1, #Image_0[0][0], 0, #X[0],#Y[0], 0, 0, 1366, 768, 20, 50, 50, 70, 10, 20, 33, 1, -1);
//Ищем изображение совпавшее хотя бы на одну треть от того что ищем с колебаниями ДО:
//меньше на 20 - больше на 50 (красный), меньше на 50 - больше на 70 (Зеленый), меньше на 10 - больше на 20 (Синий).
//(для просмотра ссылки Вам необходимо авторизоваться)
2. Zireael - 06 Февраля, 2020 - 07:48:48 - перейти к сообщению
Во вкладке графика при галке 'Контрол' изображение с окна отображается?
Скрин окна нормально сохраняется?
CODE:
win w=window ("Program Manager", "Progman", -1); // окно
if(w)
{
savescreen("C:\11111.bmp", 0, 0, w.widthclient, w.heightclient, w);
start("C:\11111.bmp");
}
else messagebox("Окно не найдено");
3. Val_027 - 06 Февраля, 2020 - 23:48:05 - перейти к сообщению
Скрин окна нормально сохраняется?

Да нормально ! опробую то что вы подкинули спасибо.
4. Zireael - 07 Февраля, 2020 - 01:26:22 - перейти к сообщению
Поиск картинки:
CODE:
int Image[99][99]; // массив для картинки размером 99*99 или меньше
loadimage (#Image[0][0], "D:\Kibor2\Image_0.bmp"); // загрузить картинку

int coord[4]={0, 0, 1920, 1080} // область поиска
int r = 10; // отклонение в цвете от 0 до 255
int p = 100; // точность поиска,

int X, Y; // переменные для координат

win w=window ("Program Manager", "Progman", -1); // окно
if(w) // если окно найдено
{
if(findimage(1, #Image[0][0], -1, #X, #Y, coord[0], coord[1], coord[2], coord[3], r,r,r,r,r,r,p,1,w)) // поиск
{
messagebox("Картинка найдена");
mousemove(X+coord[0], Y+coord[1]); // навести курсор
}
else messagebox("Картинка не найдена");
}
5. Val_027 - 07 Февраля, 2020 - 06:20:57 - перейти к сообщению
Вот что в итоге.
1 этап.
win w2=window(тут у нас контрол кому что надо);
if(w2!=0)goto AUT;
else
{messagebox("НЕТУ ОКНА/ЭКРАНА"Подмигивание;}

AUT:activate(w2);
w2.leftclient = 0;
w2.topclient = -5;
w2.widthclient = 1920;
w2.heightclient = 1058;
moveclient(w2); // ОКНО МЕСТО !

sleep (300);
savescreen("L:\!_KIB\START\ВЫБРАТЬ.bmp",917,967,950,978,w2);//координаты в окне что сохраняем.

start("L:\!_KIB\START\ВЫБРАТЬ.bmp"Подмигивание; //куда сохраняем
//ОЧЕНЬ УДОБНО видишь что и откуда сохраняешь

2 этап.

n2:win w2=window("конторл", "тук", -1);
if(w2!=0)goto AUT; //сперва нашли запуск окна
else

{sleep (500);goto n2;}
AUT:activate(w2);
w2.leftclient = 0;
w2.topclient = -5;
w2.widthclient = 1920;
w2.heightclient = 1058;
moveclient(w2); // ОКНО МЕСТО ! выставили как надо


int Image[50][50];// СЛЕДИТЬ ЗА МЕСТОМ ПОД bmp
int X[1],Y[1];
loadimage (#Image[0][0],"L:\!_KIB\START\ВЫБРАТЬ.bmp"Подмигивание;

n:if(findimage(1,#Image[0][0],0,#X[0],#Y[0],917,967,950,978,w2)!=0)goto AUT1;
// 917,967,950,978 координаты поиска в окне
else
{sleep(100);goto n;} //

AUT1:
sleep(100);
int X1=X[0]+935 ;
int Y1=Y[0]+970;
mousemove(X1,Y1,w2);// МЕСТО ТЫКА чтоб понятно уже было что танцуем где надо
sleep(600);
messagebox("НАШЛИ"Подмигивание;

а дальше уже можно вставлять в основное тело наших мучений
ЕЩЕ РАЗ СПАСИБО !!!
Буду рад всяким замечаниям...
Скоро надо будет в окнах перекрытых тыкать может есть что подсказать просто понятным кодом чего либо.
(Добавление)
 Zireael пишет:
int coord[4]={0, 0, 1920, 1080} // область поиска


Вот как раз об этом думал у меня 2 монитора как выделить 1н из них . Растерялся
6. Zireael - 07 Февраля, 2020 - 07:33:35 - перейти к сообщению
 Цитата:
надо будет в окнах перекрытых тыкать может есть что подсказать просто понятным кодом чего либо.

CODE:
win w=window (-1, "Edit", window (-1, "Notepad", -1)); // окно блокнота
sendmouse(LEFT, 66, 82, w); // клик левой кнопкой мыши

 Цитата:
у меня 2 монитора как выделить 1н из них .

Если второй монитор справа от первого, то координаты первого: 0 0 1920 1080, второго 1920 0 3840 1080.
7. Val_027 - 07 Февраля, 2020 - 07:41:29 - перейти к сообщению
 Zireael пишет:
монитор


Подскажите ! плиз можно ли шрифт редактора киборга увеличить/ очень все мелко при таком разрешении экрана как у меня/ . Help лупой смотреть не айс. Всякие варианты масштабирования винды минус ток киборга.
8. Zireael - 07 Февраля, 2020 - 07:47:59 - перейти к сообщению
 Цитата:
можно ли шрифт редактора киборга увеличить

Нельзя. Писать код в другом редакторе и потом копировать/вставлять в редактор кибор, на данный момент других вариантов наверное нет.
9. Dantes3000 - 07 Февраля, 2020 - 07:58:30 - перейти к сообщению
Я бы на месте Кибора сделал фичу по аналогии с Python. Код может быть в формате тхт, запускаешь "консоль" кибора, указываешь путь к файлу и код запускается. Тогда можно будет даже в другие IDE интегрировать
10. Val_027 - 07 Февраля, 2020 - 07:59:36 - перейти к сообщению
 Zireael пишет:
Нельзя. Писать код в другом

Да так и делаю пишу в notepad но при переносе часто русский текст /кодировка видимо/ в краказябры превращаеться.

Powered by ExBB FM 1.0 Final