А можно как-то узнать активно окно или нет?
Указатель на окно получен, переменная присвоена, теперь знать состояние окна, если активно - одно действие, если нет - другое.
Прошу прощения, если уже где-то есть ответ - не нашёл/плохо искал. )
1. Adomb - 27 Июля, 2015 - 06:37:49 - перейти к сообщению
2. Kibor - 27 Июля, 2015 - 06:48:42 - перейти к сообщению
win w=getwindow();//Получает указатель активного главного окна.
теперь сравнивая параметры.. имя, размер.. что надо можно узнать активное окно или нет..
теперь сравнивая параметры.. имя, размер.. что надо можно узнать активное окно или нет..
CODE:
win w;
e: w=getwindow();
if (w.name=="название окна которое отследить") messagebox ("именно эт окно активно");
sleep(10);
goto e;
e: w=getwindow();
if (w.name=="название окна которое отследить") messagebox ("именно эт окно активно");
sleep(10);
goto e;
3. Adomb - 27 Июля, 2015 - 07:03:49 - перейти к сообщению
Наверно подробней надо, потому что активно или нет мало. Чтобы правильно рассчитывались координаты при изменении размера окна в процессе работы срипта, нужно знать наведён курсор на окно, если наведён, получитьт координаты мыши, которые передаются getwindow и переменная получает новый размер окна. Если, соответственно, курсор не на нужном окне или оно не активно, то операция пропускается и скрипт выполняется с прежними координатами.
CODE:
win main=getwindow(0, 231, 158);
win as=getwindow(1, 231, 158);
activate(main);
int mx, my, mx1, my1, getmx, getmy;
loop: //здесь начало действий
//вот этот блок выполнялся бы только если курсор на as
getmouse(getmx, getmy);
win as=getwindow(1, getmx, getmy);
mx1=as.widthclient;
my1=as.heightclient;
mx=mx1/2; //новые координаты центра окна если окну изменили размер
my=my1/2; //
win main=getwindow(0, 231, 158);
win as=getwindow(1, 231, 158);
activate(main);
int mx, my, mx1, my1, getmx, getmy;
loop: //здесь начало действий
//вот этот блок выполнялся бы только если курсор на as
getmouse(getmx, getmy);
win as=getwindow(1, getmx, getmy);
mx1=as.widthclient;
my1=as.heightclient;
mx=mx1/2; //новые координаты центра окна если окну изменили размер
my=my1/2; //
4. Kibor - 27 Июля, 2015 - 07:14:24 - перейти к сообщению
Adomb пишет:
win main=getwindow(0, 231, 158);
win as=getwindow(1, 231, 158);
activate(main);
int mx, my, mx1, my1, getmx, getmy;
loop: //здесь начало действий
//вот этот блок выполнялся бы только если курсор на as
getmouse(getmx, getmy);
win as=getwindow(1, getmx, getmy);
mx1=as.widthclient;
my1=as.heightclient;
mx=mx1/2; //новые координаты центра окна если окну изменили размер
my=my1/2; //
win as=getwindow(1, 231, 158);
activate(main);
int mx, my, mx1, my1, getmx, getmy;
loop: //здесь начало действий
//вот этот блок выполнялся бы только если курсор на as
getmouse(getmx, getmy);
win as=getwindow(1, getmx, getmy);
mx1=as.widthclient;
my1=as.heightclient;
mx=mx1/2; //новые координаты центра окна если окну изменили размер
my=my1/2; //
ошибка повторное объявление..
5. Adomb - 27 Июля, 2015 - 07:26:23 - перейти к сообщению
Дык as объявляется до loop: , а после скрипт зацикливается и вначале цикла стоит этот блок, который каждый раз получает новый размер окна. Хоть там тоже переменная as - cкрипт всё равно работает, отправляет клики куда задумано, по новым координатам, если меняешь размер окна, только, соответственно, пока мышь на окне - отведёшь и всё. Как проверить что мышь на as, перед выполнением этого блока? ))
6. Kibor - 27 Июля, 2015 - 07:39:19 - перейти к сообщению
Adomb пишет:
Хоть там тоже переменная as - cкрипт всё равно работает
до поры до времени..,..CODE:
string name="окно";
win w;
int x, y;
e:
getmouse(x, y);
w=getwindow(0, x, y);
if (w.name==name) messagebox ("мышь над окном");//Сравнивать.............
sleep(10);
goto e;
win w;
int x, y;
e:
getmouse(x, y);
w=getwindow(0, x, y);
if (w.name==name) messagebox ("мышь над окном");//Сравнивать.............
sleep(10);
goto e;
7. Adomb - 27 Июля, 2015 - 07:44:29 - перейти к сообщению
Просто, когда запускается скрипт - там будет по любому инициализация as по координатам, которые жёстко указаны
А дальше только цикл действий, которые происходят при выполнении определённых условий. И вот в теле цикла loop: если курсор опять появился на окне, срабатывает блок определения нового размера окна и as переназначается.
Наверно мудрёно пытаюсь делать. ))
upd.
Написал ещё до вашего ответа. Щас, осмыслю..
(Добавление)
Ну прямо сказка какая-то.. )
Работает!!!
Спасибо.
(Добавление)
Поторопился отправить, надо так :
Иначе - Out of memory.
CODE:
win main=getwindow(0, 231, 158);
win as=getwindow(1, 231, 158);
activate(main);
int mx, my, mx1, my1, getmx, getmy;
win main=getwindow(0, 231, 158);
win as=getwindow(1, 231, 158);
activate(main);
int mx, my, mx1, my1, getmx, getmy;
А дальше только цикл действий, которые происходят при выполнении определённых условий. И вот в теле цикла loop: если курсор опять появился на окне, срабатывает блок определения нового размера окна и as переназначается.
CODE:
loop: //здесь начало действий
//вот этот блок выполнялся бы только если курсор на as
getmouse(getmx, getmy);
win as=getwindow(1, getmx, getmy);
mx1=as.widthclient;
my1=as.heightclient;
mx=mx1/2; //новые координаты центра окна если окну изменили размер
my=my1/2; //
...
...
goto loop;
loop: //здесь начало действий
//вот этот блок выполнялся бы только если курсор на as
getmouse(getmx, getmy);
win as=getwindow(1, getmx, getmy);
mx1=as.widthclient;
my1=as.heightclient;
mx=mx1/2; //новые координаты центра окна если окну изменили размер
my=my1/2; //
...
...
goto loop;
Наверно мудрёно пытаюсь делать. ))
upd.
Написал ещё до вашего ответа. Щас, осмыслю..
(Добавление)
Ну прямо сказка какая-то.. )
CODE:
win main=getwindow(0, 231, 158);
activate(main);
string name=main.name;
win w;
int mx, my, mx1, my1, getmx, getmy;
loop:
getmouse(getmx, getmy);
w=getwindow(0, getmx, getmy);
if (w.name==name){win as=getwindow(1, getmx, getmy);}
mx1=as.widthclient;
my1=as.heightclient;
mx=mx1/2; //новые координаты центра окна, независимо от его размера
my=my1/2; //
...
...
goto loop;
win main=getwindow(0, 231, 158);
activate(main);
string name=main.name;
win w;
int mx, my, mx1, my1, getmx, getmy;
loop:
getmouse(getmx, getmy);
w=getwindow(0, getmx, getmy);
if (w.name==name){win as=getwindow(1, getmx, getmy);}
mx1=as.widthclient;
my1=as.heightclient;
mx=mx1/2; //новые координаты центра окна, независимо от его размера
my=my1/2; //
...
...
goto loop;
Работает!!!
Спасибо.
(Добавление)
CODE:
if (w.name==name)win as=getwindow(1, getmx, getmy);
if (w.name==name)win as=getwindow(1, getmx, getmy);
Поторопился отправить, надо так :
CODE:
if (w.name==name);
{
win as=getwindow(1, getmx, getmy);
}
if (w.name==name);
{
win as=getwindow(1, getmx, getmy);
}
Иначе - Out of memory.