Zireael |
Отправлено: 12 Марта, 2019 - 01:37:40
|
Эксперт
Покинул форум
Сообщений всего: 4466
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: как кликом мыши по определенному месту в программе записать(перезаписать) координаты клика мыши в файл тхт, сохранить его
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); // переместить курсор
} |
|
|
CKA3KA |
Отправлено: 12 Марта, 2019 - 03:51:51
|
Участник
Покинул форум
Сообщений всего: 66
Дата рег-ции: Февр. 2019
Репутация: 1
|
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:sendmouse (LEFT, х, у, wind);
в wind указываешь контрл программы
и все работает
Остался вопрос по именам переменных,
неужели количество имен ограничено количеством букв,
или можно как-то модифицировать составлять комбо? |
|
|
CKA3KA |
Отправлено: 12 Марта, 2019 - 13:35:31
|
Участник
Покинул форум
Сообщений всего: 66
Дата рег-ции: Февр. 2019
Репутация: 1
|
Почему блок таймера когда отработает в нем поиск изображения со своими переменными, то далее делаю goto до блока кода:
CODE:int x, y;
if(fopen("C:\click.txt", "r"))
{
fread(x);
fread(y);
fclose();
sendmouse(LEFT, x, y, контрол программы);
}
и таймер его уже не видит пропускает, а он как раз необходимо чтобы сработал после отработки блока таймера.
Без таймера код чисто по goto закольцованный - там все работает,
т.е с начала запуска скрипта записали кликом нужные координаты, и блок кода который я выше написал прекрасно считывает работает без проблем.
Как блок таймера зацепить к указанному выше блоку кода?(Отредактировано автором: 12 Марта, 2019 - 13:45:16) |
|
|
Kibor |
Отправлено: 13 Марта, 2019 - 14:39:19
|
Эксперт
Покинул форум
Сообщений всего: 8220
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
Так?
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;
}
|
|
|
|