Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

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

> Описание: Положение окна
Almighty
Отправлено: 05 Октября, 2020 - 22:16:55
Post Id



Пользователь
Участник


Покинул форум
Сообщений всего: 64
Дата рег-ции: Июнь 2018  
Откуда: Kyiv
Репутация: 2




Доброго времени суток.
Использую для игры эмулятор Нокс.
Иногда окно само меняет свое расположение на экране и сдвигается за пределы монитора.
Подскажите, как правильно выполнить проверку расположения окна и вернуть его на исходное место. Задавать изначально координаты нету смысла, так как использую часто по 2 эмулятора.

Код, который использую для получения координат на окно, а так же размеры окна прилагается. Благодарю
CODE:
options ( "pause" , 160, 110);
//int ttX, ttY;
getmouse(ttX, ttY);
win wO=getwindow(0, ttX, ttY);
//messagebox (wO.name);
if (wO.widthclient!=789 || wO.heightclient!=475)
{
wO.widthclient=789;
wO.heightclient=475;
moveclient(wO);
pause(2000);
ex_KIB=w_KIB.widthclient; ey_KIB=w_KIB.heightclient;
}
 
 Top
Zireael
Отправлено: 06 Октября, 2020 - 02:01:15
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4449
Дата рег-ции: Нояб. 2017  
Репутация: 585




 Цитата:
как правильно выполнить проверку расположения окна и вернуть его на исходное место.

CODE:
win w = window (-1, "Notepad", -1); // окно (блокнот в данном случае)
if(w) // если окно найдено
{
if(w.top!=0 || w.left!=0) // если окно находится не в координатах 0 0
{
w.top=0;
w.left=0;
movewindow(w); // переместить окно в координаты 0 0
}
}
else messagebox("Окно не найдено");
 
 Top
Almighty
Отправлено: 06 Октября, 2020 - 13:22:20
Post Id



Пользователь
Участник


Покинул форум
Сообщений всего: 64
Дата рег-ции: Июнь 2018  
Откуда: Kyiv
Репутация: 2




 Zireael пишет:
 Цитата:
как правильно выполнить проверку расположения окна и вернуть его на исходное место.

CODE:
win w = window (-1, "Notepad", -1); // окно (блокнот в данном случае)
if(w) // если окно найдено
{
if(w.top!=0 || w.left!=0) // если окно находится не в координатах 0 0
{
w.top=0;
w.left=0;
movewindow(w); // переместить окно в координаты 0 0
}
}
else messagebox("Окно не найдено");

Подскажите, как задать не изначально координаты в коде, а получить их (координаты окна) в момент запуска окна, а если окно переместилось - вернуть обратно на изначальный координаты.

Вижу в коде, который вы предложили изначально задаются координаты, если будет 2 эмулятора - два окна на ложатся друг на друга
 
 Top
Zireael
Отправлено: 06 Октября, 2020 - 13:34:21
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4449
Дата рег-ции: Нояб. 2017  
Репутация: 585




 Цитата:
как задать не изначально координаты в коде, а получить их (координаты окна)

CODE:
int startPosX, startPosY;
win w = window (-1, "Notepad", -1); // окно (блокнот в данном случае)
if(w) // если окно найдено
{
startPosX = w.left; // запомнить положение окна
startPosY = w.top;
enabletimer(0);

loop()
{
// нужные действия
sleep(10);
}
}
else messagebox("Окно не найдено");


CREATE_TIMER(0, 500)
{
setwindowparam(w); // обновить параметры окна
if(w.top!=startPosY || w.left!=startPosX) // если позиция изменилась
{
w.left=startPosX;
w.top=startPosY;
movewindow(w); // переместить окно
}
}

(Отредактировано автором: 06 Октября, 2020 - 13:35:05)

 
 Top
Arimor
Отправлено: 07 Октября, 2020 - 00:44:47
Post Id



Пользователь
Мастер


Покинул форум
Сообщений всего: 125
Дата рег-ции: Сент. 2020  
Репутация: 1




 Almighty пишет:
Подскажите, как задать не изначально координаты в коде, а получить их

Хотел решить ваш вопрос в итоге почему то не работает.

Zireael , Подскажите пожалуйста почему мой код не работает?

CODE:
int count=6;
win w[count];
int PosX[count], PosY[count];
int x, y;
int P[count];

for(int i=0; i<count; i++)
{
textbkcolor(65280, 0);
textout(i, 100, 100+i*20, P[i], 1);
while(getkeystate(81)==0)sleep(10); // нажать Q
getmouse(x, y);
w[i]=getwindow(0, x, y);
PosX[i] = w[i].left;
PosY[i] = w[i].top;
messagebox(PosX[i]);
}
 
 Top
Zireael
Отправлено: 07 Октября, 2020 - 02:37:47
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4449
Дата рег-ции: Нояб. 2017  
Репутация: 585




 Цитата:
Подскажите пожалуйста почему мой код не работает?

 Цитата:
int P[count];

Так нельзя нельзя объявлять массивы. Либо используйте статический массив, указывая его размер числом, а не переменной, либо динамический используя оператор new.
CODE:
int count=6;
win w[6]; // массив win не может быть динамическим
new int PosX[count];
new int PosY[count];
int x, y;
new int P[count];

for(int i=0; i<count; i++)
{
while(getkeystate(81)==0)sleep(10); // нажать Q
while(getkeystate(81))sleep(10);

getmouse(x, y);
w[i]=getwindow(0, x, y);
PosX[i] = w.left[i];
PosY[i] = w.top[i];
textbkcolor(65280, 0);
textout(i, 100, 100+i*20, format(PosX[i])+" "+format(PosY[i]), 1);
}
 
 Top
Arimor
Отправлено: 07 Октября, 2020 - 19:40:37
Post Id



Пользователь
Мастер


Покинул форум
Сообщений всего: 125
Дата рег-ции: Сент. 2020  
Репутация: 1




Zireael , а вообще возможно для win w[]; задать переменную?
CODE:
int count=formatsn(input("Сколько окон?"));
win new w[count];
Так?
(Добавление)
Есть другой способ переместить окна? EasyAntiCheat блокирует перемещение этим способом
 
 Top
Zireael
Отправлено: 08 Октября, 2020 - 02:01:27
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4449
Дата рег-ции: Нояб. 2017  
Репутация: 585




 Цитата:
а вообще возможно для win w[]; задать переменную?

Нет, указывайте числом. Если не известно сколько будет окон, то можно указать больше чем нужно.
 Цитата:
Есть другой способ переместить окна? EasyAntiCheat блокирует перемещение этим способом

Если не срабатывает movewindow, то и это скорее всего не сработает:
CODE:
#define SWP_NOSIZE 0x0001
#define SWP_NOZORDER 0x0004
external(INT, "SetWindowPos", "SetWindowPos", "User32.dll");


win w = window (-1, "Notepad", -1); // окно (блокнот в данном случае)
if(w)
{
// переместить окно в координаты 200 100
SetWindowPos(formatwi(w), 0, 200, 100, 0, 0, SWP_NOSIZE | SWP_NOZORDER);
}
else messagebox("Окно не найдено");

Можно зажать левую кнопку мыши и перетащить окно.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 5 (гостей: 5, зарегистрированных: 0)
« Вопросы и решение проблем »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by