Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » Запись координат клика мыши в файл, и затем считывание.

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

1. CKA3KA - 11 Марта, 2019 - 18:23:07 - перейти к сообщению
Приветствую.
Проштудировал форум и все видео, не нашел,
как кликом мыши по определенному месту в программе записать(перезаписать) координаты клика мыши в файл тхт, сохранить его,
и затем считывать для клика уже эти координаты?
Можно тут небольшой код для понимания?
2. Zireael - 11 Марта, 2019 - 18:37:40 - перейти к сообщению
 Цитата:
как кликом мыши по определенному месту в программе записать(перезаписать) координаты клика мыши в файл тхт, сохранить его

CODE:
int x, y;
while(getkeystate(1)==0)sleep(1); // ждать нажатия левой кнопки мыши
getmouse(x, y); // получить экранные координаты курсора

if(fopen("C:\click.txt", "w")) // если файл открылся
{
fwrite(format(x)); // пишем координату X
fwrite(ENDL); // перенос строки
fwrite(format(y)); // пишем координату Y
fclose(); // закрыть файл
}

 Цитата:
затем считывать для клика уже эти координаты?

CODE:
int x, y;
if(fopen("C:\click.txt", "r")) // если файл открылся
{
fread(x); // прочитать файл, координата X
fread(y); // прочитать файл, координата X
fclose(); // закрыть файл
messagebox(format(x)+" "+format(y));
mousemove(x, y); // переместить курсор
}
3. CKA3KA - 11 Марта, 2019 - 20:51:51 - перейти к сообщению
Zireael премного благодарю.
Улыбка

единственное нужно клик в указанных координатах, но чтобы без перемещения курсора.
вот команда:
mouse(x, y); // но он кликает и перемещает курсор.
какую команду дописать, чтобы оно к примеру в NOXе кликал автономно не затрагивая курсор, как к примеру в findimage?
(Добавление)
Вот создал старт привязанный к ноксу в визуальном редакторе самое простое для понимания:

Нажмите для увеличения


получился код:
CODE:
int k, x[1], y[1], n=0;
win w_KIB;
int ex_KIB, ey_KIB, sum_KIB, x_KIB, y_KIB;

start_();

int x, y;
if(fopen("C:\click.txt", "r")) // ???? ???? ????????
{
fread(x); // ????????? ????, ?????????? X
fread(y); // ????????? ????, ?????????? X
fclose(); // ??????? ????
messagebox(format(x)+" "+format(y));
mouse(LEFT, x, y); // ??????????? ??????
}


function start_()
{
pause(1000);
w_KIB=window ("ScreenBoardClassWindow", "Qt5QWindowIcon", window ("NoxPlayer", "Qt5QWindowIcon", -1));
ex_KIB=w_KIB.widthclient; ey_KIB=w_KIB.heightclient;
}


при запуске выскакивет ошибка:
Повторение имени переменной х
как вылечить?
Огорчение
(Добавление)
C переменными разобрался, надо просто х, у, заменить на любые свои, к примеру b, c
правда получается что переменных максимум можно создать пока есть свободные буквы, иначе будет выдавать ошибку повторения переменных?
Однако
И вот как заставить кликать в фоне, не затрагивая курсор?
CODE:
mouse(LEFT, x, y);

(Добавление)
Разобрался, век живи век учись Закатив глазки
команда
CODE:
sendmouse (LEFT, х, у, wind);

в wind указываешь контрл программы
и все работает
Улыбка

Остался вопрос по именам переменных,
неужели количество имен ограничено количеством букв,
или можно как-то модифицировать составлять комбо?
4. Kibor - 12 Марта, 2019 - 02:56:55 - перейти к сообщению
 Цитата:
int переменная_1=5;
int еще_переменнаяW=2;
messagebox (переменная_1+еще_переменнаяW);
5. CKA3KA - 12 Марта, 2019 - 06:35:31 - перейти к сообщению
Почему блок таймера когда отработает в нем поиск изображения со своими переменными, то далее делаю goto до блока кода:
CODE:
int x, y;
if(fopen("C:\click.txt", "r"))
{
fread(x);
fread(y);
fclose();
sendmouse(LEFT, x, y, контрол программы);
}

и таймер его уже не видит пропускает, а он как раз необходимо чтобы сработал после отработки блока таймера.
Без таймера код чисто по goto закольцованный - там все работает,
т.е с начала запуска скрипта записали кликом нужные координаты, и блок кода который я выше написал прекрасно считывает работает без проблем.
Огорчение
Как блок таймера зацепить к указанному выше блоку кода?
6. Kibor - 13 Марта, 2019 - 07:39:19 - перейти к сообщению
Так?


CODE:

int sum_KIB_T0, x_KIB_T0, y_KIB_T0;
int col_KIB, ex_KIB, ey_KIB, sum_KIB, x_KIB, y_KIB;
int Image_0_KIB[1365][768];

start_();

enabletimer (0);

m_KIB2:


goto m_KIB2;
m_KIB4: a:;
beep(1000, 1000);
goto m_KIB2;



function start_()
{
getdisplay(col_KIB, ex_KIB, ey_KIB);
load_image_();
pause(1000);
}


function findimage_(int #Image, int t, int p1, int p2, int m, int xm, int ym, int mov_m, int mov_x, int mov_y, int p3, int wait, int cycle, int fon, int r, int p, int k, int xs, int ys, int xf, int yf, int#sum, int#x, int#y)
{
int timKIB, sumKIB, xKIB, yKIB, tx, ty, tcycle=0;
sty: pause(p1);
sumKIB=0;
if (t!=0) timKIB=gettime();
a: if (r==0 && p==100){sum=findimage(k, #Image[0][0], fon, #x[0], #y[0], xs, ys, xf, yf, -1); if (sum>0) goto e;}
else {sum=findimage(k, #Image[0][0], fon, #x[0], #y[0], xs, ys, xf, yf, r, r, r, r, r, r, p, 1, -1); if (sum>0) goto e;}
if (t==0) return 0;
if (gettime()-timKIB<t){sleep(20); goto a;}
return 0;
e: sumKIB=sum; xKIB=x[0]; yKIB=y[0];
pause(p2);
if (m==1){mouse(LEFT, xs+xKIB+xm, ys+yKIB+ym); goto hy;}
if (m==2){mouse(MIDDLE, xs+xKIB+xm, ys+yKIB+ym); goto hy;}
if (m==3){mouse(RIGHT, xs+xKIB+xm, ys+yKIB+ym); goto hy;}
if (m==4){mousedown(LEFT, xs+xKIB+xm, ys+yKIB+ym); goto hy;}
if (m==5){mousedown(MIDDLE, xs+xKIB+xm, ys+yKIB+ym); goto hy;}
if (m==6){mousedown(RIGHT, xs+xKIB+xm, ys+yKIB+ym); goto hy;}
if (m==7){mouseup(LEFT, xs+xKIB+xm, ys+yKIB+ym); goto hy;}
if (m==8){mouseup(MIDDLE, xs+xKIB+xm, ys+yKIB+ym); goto hy;}
if (m==9){mouseup(RIGHT, xs+xKIB+xm, ys+yKIB+ym); goto hy;}
if (m==10){mousedbl(LEFT, xs+xKIB+xm, ys+yKIB+ym); goto hy;}
if (m==11){mousedbl(MIDDLE, xs+xKIB+xm, ys+yKIB+ym); goto hy;}
if (m==12){mousedbl(RIGHT, xs+xKIB+xm, ys+yKIB+ym); goto hy;}
if (m==13)mousemove(xs+xKIB+xm, ys+yKIB+ym);
hy: if (mov_m==1)mousemove(mov_x, mov_y);
if (m>0 && m<14)pause(p3);
if (wait!=-1)
{
for (int ttim=gettime(); gettime()-ttim<wait; sleep(20))
{
if (r==0 && p==100){if (findimage(1, #Image[0][0], fon, #x[0], #y[0], xs, ys, xf, yf, -1)==0)return sumKIB;}
else {if (findimage(1, #Image[0][0], fon, #x[0], #y[0], xs, ys, xf, yf, r, r, r, r, r, r, p, 1, -1)==0)return sumKIB;}
}
if (tcycle<cycle){tcycle++; goto sty;}
return 0;
}
return sumKIB;
}



function findimage_T0(int #Image, int t, int p1, int p2, int m, int xm, int ym, int mov_m, int mov_x, int mov_y, int p3, int wait, int cycle, int fon, int r, int p, int k, int xs, int ys, int xf, int yf, int#sum, int#x, int#y)
{
int timKIB, sumKIB, xKIB, yKIB, tx, ty, tcycle=0;
sty: pause(p1);
sumKIB=0;
if (t!=0) timKIB=gettime();
a: if (r==0 && p==100){sum=findimage(k, #Image[0][0], fon, #x[0], #y[0], xs, ys, xf, yf, -1); if (sum>0) goto e;}
else {sum=findimage(k, #Image[0][0], fon, #x[0], #y[0], xs, ys, xf, yf, r, r, r, r, r, r, p, 1, -1); if (sum>0) goto e;}
if (t==0) return 0;
if (gettime()-timKIB<t){sleep(20); goto a;}
return 0;
e: sumKIB=sum; xKIB=x[0]; yKIB=y[0];
pause(p2);
if (m==1){mouse(LEFT, xs+xKIB+xm, ys+yKIB+ym); goto hy;}
if (m==2){mouse(MIDDLE, xs+xKIB+xm, ys+yKIB+ym); goto hy;}
if (m==3){mouse(RIGHT, xs+xKIB+xm, ys+yKIB+ym); goto hy;}
if (m==4){mousedown(LEFT, xs+xKIB+xm, ys+yKIB+ym); goto hy;}
if (m==5){mousedown(MIDDLE, xs+xKIB+xm, ys+yKIB+ym); goto hy;}
if (m==6){mousedown(RIGHT, xs+xKIB+xm, ys+yKIB+ym); goto hy;}
if (m==7){mouseup(LEFT, xs+xKIB+xm, ys+yKIB+ym); goto hy;}
if (m==8){mouseup(MIDDLE, xs+xKIB+xm, ys+yKIB+ym); goto hy;}
if (m==9){mouseup(RIGHT, xs+xKIB+xm, ys+yKIB+ym); goto hy;}
if (m==10){mousedbl(LEFT, xs+xKIB+xm, ys+yKIB+ym); goto hy;}
if (m==11){mousedbl(MIDDLE, xs+xKIB+xm, ys+yKIB+ym); goto hy;}
if (m==12){mousedbl(RIGHT, xs+xKIB+xm, ys+yKIB+ym); goto hy;}
if (m==13)mousemove(xs+xKIB+xm, ys+yKIB+ym);
hy: if (mov_m==1)mousemove(mov_x, mov_y);
if (m>0 && m<14)pause(p3);
if (wait!=-1)
{
for (int ttim=gettime(); gettime()-ttim<wait; sleep(20))
{
if (r==0 && p==100){if (findimage(1, #Image[0][0], fon, #x[0], #y[0], xs, ys, xf, yf, -1)==0)return sumKIB;}
else {if (findimage(1, #Image[0][0], fon, #x[0], #y[0], xs, ys, xf, yf, r, r, r, r, r, r, p, 1, -1)==0)return sumKIB;}
}
if (tcycle<cycle){tcycle++; goto sty;}
return 0;
}
return sumKIB;
}




function load_image_()
{
loadimage (#Image_0_KIB[0][0], "C:\Image_0.bmp");
}


CREATE_TIMER(0, 1000)
{

findimage_T0(#Image_0_KIB[0][0], 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, -1, -1, 0, 100, 1, 0, 0, ex_KIB, ey_KIB, #sum_KIB_T0, #x_KIB_T0, #y_KIB_T0);
goto a;

}

7. CKA3KA - 14 Марта, 2019 - 16:48:58 - перейти к сообщению
Вся запара была, что координаты переменной для изображения в таймере не совпадали с указанными в старте.
В изображении прописал k x_[0] y_[0] - а надо было k x[0] y[0]
в int старта - k, x[1], y[1], n=0

т.е. "_" оказался лишним, поэтому таймер находил изображение, но не кликал мышью по нему.
Век живи век учись)
::wink24.gif::
(Добавление)
И главная запара:


Потому тот код и не работал,
а как сделал переход по goto (выделен фиалетовым) - то все заработало.
::rolleyes24.gif::
(Добавление)
Админ с каких фото хостингов вставлять сюда изображения- чтобы они высвечивались полностью?
а не голимая унылая ссылка.
8. Kibor - 14 Марта, 2019 - 20:49:24 - перейти к сообщению
 CKA3KA пишет:
с каких фото хостингов вставлять сюда изображения- чтобы они высвечивались полностью?
а не голимая унылая ссылка

Надо вставлять как
http
а не
https

Powered by ExBB FM 1.0 Final