rigl |
Отправлено: 23 Июля, 2021 - 07:54:22
|
Прохожий
Покинул форум
Сообщений всего: 5
Дата рег-ции: Июль 2021
Репутация: 0
|
Ибо изначальная задача в том, чтобы найти с помощью findheapcolor нужную картинку на полу-белом фоне, а дальше, от найденной картинки, распознать текст(readtext не добавлял пока что, ибо возникла проблема). P.S. Картинка стоит на рабочем столе(потом нужно будет перебросить все это на нужное окно.
[img](для просмотра ссылки Вам необходимо авторизоваться) /img]
Код:
CODE:win W_Kib;
int Screen[3000][3000];
int K_Kib;
int X_Kib[1000];
int Y_Kib[1000];
int Color0[1] = {16119799};
int Kol0[1] = {5};
int eCol_Kib, eX_Kib, eY_Kib;
getdisplay(eCol_Kib, eX_Kib, eY_Kib);
KIB_1: if (FindHeapcolor(0, #Screen[0][0], #W_Kib, W_Kib.leftclient, W_Kib.topclient, 66, 95, 66, 95, #Color0[0], #Kol0[0], 1, 1, -1, 0, 0, 0, #K_Kib, #X_Kib[0], #Y_Kib[0], 533, 917, 1277, 1058, 0, 0, 30, 0, "0, 0, 0, 0", 10, "Бездействие", 0, 0, 100, 0, 5, 5)>0) goto KIB_3;
TextOut(0, "Текст", 0, 0, 0, 0, 16777215);
goto KIB_1;
KIB_3: TextOut(0, "Текст", 0, X_Kib+533, Y_Kib+917, 0, 16777215);
goto KIB_1;
function FindHeapcolor(int ew, int #Scr, win #w, int v_x, int v_y, int Obl_n_x, int Obl_n_y, int Obl_o_x, int Obl_o_y, int #col, int #kol, int k_col, int kol_col, int k, int Sort, int sortx, int sorty, int #mK, int #mX, int #mY, int ex1, int ey1, int ex2, int ey2, int p1, int t, int r, int ignor, string mas_ignor, int p2, string m, int smx, int smy, int p3, int per_m, int per_x, int per_y)
{
pause (p1);
if (t==0)t=1;
looptime(t)
{
if (ew==0)mK=findheapcolor(k, #col[0], #kol[0], k_col, kol_col, #mX[0], #mY[0], Obl_n_x, Obl_n_y, Obl_o_x, Obl_o_y, ex1, ey1, ex2, ey2, r, r, r, r, r, r, -1);
if (ew==1)mK=findheapcolor(k, #col[0], #kol[0], k_col, kol_col, #mX[0], #mY[0], Obl_n_x, Obl_n_y, Obl_o_x, Obl_o_y, v_x+ex1, v_y+ey1, v_x+ex2, v_y+ey2, r, r, r, r, r, r, -1);
if (ew==2)mK=findheapcolor(k, #col[0], #kol[0], k_col, kol_col, #mX[0], #mY[0], Obl_n_x, Obl_n_y, Obl_o_x, Obl_o_y, ex1, ey1, ex2, ey2, r, r, r, r, r, r, w);
if (ew==3 || ew==4)mK=findheapcolor(k, #col[0], #kol[0], k_col, kol_col, #mX[0], #mY[0], Obl_n_x, Obl_n_y, Obl_o_x, Obl_o_y, ex1, ey1, ex2, ey2, r, r, r, r, r, r, #Scr[0][0]);
if (mK>0) break;
sleep(5);
}
if (mK<1) return mK;
if (ew==3 || ew==4){ex1=ex1+screenstartx(); ey1=ey1+screenstarty();}
for (int n=0; n<mK; n++)
{
mX[n]=mX[n]+ex1;
mY[n]=mY[n]+ey1;
}
if (ignor)
{
mas_ignor=mas_ignor+"^r^n";
string P[4];
int x1, y1, x2, y2;
if (regexsearch(4, #P[0], mas_ignor, "[0-9]+(?=,|\r\n)")==4)
{
x1=formatsn(P[0]); y1=formatsn(P[1]); x2=formatsn(P[2]); y2=formatsn(P[3]);
for (n=0; n<mK; n++)
{
if (mX[n]>x1 && mX[n]<x2 && mY[n]>y1 && mY[n]<y2)
{
mK--;
for (int n1=n; n1<mK; n1++)
{
mX[n1]=mX[n1+1]; mY[n1]=mY[n1+1];
}
if (mK<1) return mK;
n--;
}
}
while (regexsearch(4, #P[0])==4)
{
x1=formatsn(P[0]); y1=formatsn(P[1]); x2=formatsn(P[2]); y2=formatsn(P[3]);
for (n=0; n<mK; n++)
{
if (mX[n]>x1 && mX[n]<x2 && mY[n]>y1 && mY[n]<y2)
{
mK--;
for (n1=n; n1<mK; n1++)
{
mX[n1]=mX[n1+1]; mY[n1]=mY[n1+1];
}
if (mK<1) return mK;
n--;
}
}
}
}
}
if (Sort) sort(sortx, sorty, #mX[0], #mY[0], mK);
pause (p2);
if (ew==0 || ew==3 || ew==1)
{
if (ew==1){smx=v_x+smx; smy=v_y+smy;}
if (m=="Левую клик"){mouse(LEFT, smx+mX[0], smy+mY[0]); goto hy;}
if (m=="Среднюю клик"){mouse(MIDDLE, smx+mX[0], smy+mY[0]); goto hy;}
if (m=="Правую клик"){mouse(RIGHT, smx+mX[0], smy+mY[0]); goto hy;}
if (m=="Левую нажать"){mousedown(LEFT, smx+mX[0], smy+mY[0]); goto hy;}
if (m=="Среднюю нажать"){mousedown(MIDDLE, smx+mX[0], smy+mY[0]); goto hy;}
if (m=="Правую нажать"){mousedown(RIGHT, smx+mX[0], smy+mY[0]); goto hy;}
if (m=="Левую отпустить"){mouseup(LEFT, smx+mX[0], smy+mY[0]); goto hy;}
if (m=="Среднюю отпустить"){mouseup(MIDDLE, smx+mX[0], smy+mY[0]); goto hy;}
if (m=="Правую отпустить"){mouseup(RIGHT, smx+mX[0], smy+mY[0]); goto hy;}
if (m=="Левая двойной клик"){mousedbl(LEFT, smx+mX[0], smy+mY[0]); goto hy;}
if (m=="Средняя двойной клик"){mousedbl(MIDDLE, smx+mX[0], smy+mY[0]); goto hy;}
if (m=="Правая двойной клик"){mousedbl(RIGHT, smx+mX[0], smy+mY[0]); goto hy;}
if (m=="Переместить"){mousemove(smx+mX[0], smy+mY[0]); goto hy;}
}
if (ew==2 || ew==4)
{
if (m=="Левую клик"){sendmouse(LEFT, smx+mX[0], smy+mY[0], w); goto hy;}
if (m=="Среднюю клик"){sendmouse(MIDDLE, smx+mX[0], smy+mY[0], w); goto hy;}
if (m=="Правую клик"){sendmouse(RIGHT, smx+mX[0], smy+mY[0], w); goto hy;}
if (m=="Левую нажать"){sendmousedown(LEFT, smx+mX[0], smy+mY[0], w); goto hy;}
if (m=="Среднюю нажать"){sendmousedown(MIDDLE, smx+mX[0], smy+mY[0], w); goto hy;}
if (m=="Правую нажать"){sendmousedown(RIGHT, smx+mX[0], smy+mY[0], w); goto hy;}
if (m=="Левую отпустить"){sendmouseup(LEFT, smx+mX[0], smy+mY[0], w); goto hy;}
if (m=="Среднюю отпустить"){sendmouseup(MIDDLE, smx+mX[0], smy+mY[0], w); goto hy;}
if (m=="Правую отпустить"){sendmouseup(RIGHT, smx+mX[0], smy+mY[0], w); goto hy;}
if (m=="Левая двойной клик"){sendmousedbl(LEFT, smx+mX[0], smy+mY[0], w); goto hy;}
if (m=="Средняя двойной клик"){sendmousedbl(MIDDLE, smx+mX[0], smy+mY[0], w); goto hy;}
if (m=="Правая двойной клик"){sendmousedbl(RIGHT, smx+mX[0], smy+mY[0], w); goto hy;}
if (m=="Переместить")sendmousemove(smx+mX[0], smy+mY[0], w);
}
hy: if (m!="Бездействие")
{
pause (p3);
if (per_m)
{
if (ew==0 || ew==3 || ew==1)mousemove(per_x, per_y);
if (ew==2 || ew==4)sendmousemove(per_x, per_y, w);
}
}
return mK;
}
function TextOut(int n, string text, int o, int x, int y, int colt, int colf)
{
textbkcolor (colt,colf);
textout(n, x, y, text, o);
} (Отредактировано автором: 23 Июля, 2021 - 07:56:37) |
|
|
Zireael |
Отправлено: 23 Июля, 2021 - 08:59:12
|
Эксперт
Покинул форум
Сообщений всего: 4456
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: TextOut(0, "Текст", 0, X_Kib+533, Y_Kib+917, 0, 16777215);
CODE:TextOut(0, "Текст", 0, X_Kib[0]+533, Y_Kib[0]+917, 0, 16777215); (Отредактировано автором: 23 Июля, 2021 - 08:59:29) |
|
|
rigl |
Отправлено: 23 Июля, 2021 - 09:53:08
|
Прохожий
Покинул форум
Сообщений всего: 5
Дата рег-ции: Июль 2021
Репутация: 0
|
Zireael пишет: Цитата: TextOut(0, "Текст", 0, X_Kib+533, Y_Kib+917, 0, 16777215);
CODE:TextOut(0, "Текст", 0, X_Kib[0]+533, Y_Kib[0]+917, 0, 16777215);
Еще вопрос есть, вот я получил местоположение данного цвета(четко посередине сверху), как мне определить ему квадрат, чтобы readtext брал четко по нужному квадрату?
Я красным цветом указал нужный квадрат
[img](для просмотра ссылки Вам необходимо авторизоваться) /img] |
|
|
Zireael |
Отправлено: 23 Июля, 2021 - 10:06:50
|
Эксперт
Покинул форум
Сообщений всего: 4456
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: получил местоположение данного цвета(четко посередине сверху), как мне определить ему квадрат, чтобы readtext брал четко по нужному квадрату?
Пересчитать координаты.
CODE:int sx = X_Kib[0]+533-25;
int sy = Y_Kib[0]+917+10;
int ex = sx + 50;
int ey = sy + 50;
mousemove(sx, sy);
pause(2000);
mousemove(ex, ey); |
|
|
rigl |
Отправлено: 23 Июля, 2021 - 10:29:12
|
Прохожий
Покинул форум
Сообщений всего: 5
Дата рег-ции: Июль 2021
Репутация: 0
|
Zireael пишет: Цитата: получил местоположение данного цвета(четко посередине сверху), как мне определить ему квадрат, чтобы readtext брал четко по нужному квадрату?
Пересчитать координаты.
CODE:int sx = X_Kib[0]+533-25;
int sy = Y_Kib[0]+917+10;
int ex = sx + 50;
int ey = sy + 50;
mousemove(sx, sy);
pause(2000);
mousemove(ex, ey);
Извиняюсь, но, в визуальном редакторе как должен выглядеть readtext с этими заданными переменными? Ибо в коде не особо пока что понимаю( Спасибо за ответы, чрезмерно благодарен |
|
|
|