Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » Идентификация окна

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

1. netspasibo - 21 Декабря, 2015 - 19:31:05 - перейти к сообщению
Добрый день.
Если ли способы идентификации окна по его ID, например?
Если использовать
CODE:
win window=window ("Документ.txt — Блокнот", "Notepad", -1)

то при запуске нескольких копий блокнота он теряется.
Если использовать
CODE:
getmouse(x, y);
window=getwindow(1, x, y);

то определяет верно, но при запуске нескольких одинаковых окон скрипт начинает сбоить и, как бы, "пропускает" функции или "не замечает" их. Так же не всегда есть возможность привязки к окну клиента. А вот определение ID клиента и привязка уже к нему, была бы в самый раз. Тем более, изменения размера окна влияет ведь на функцию?
Буду рад вашей помощи.
Спасибо.
2. Kibor - 21 Декабря, 2015 - 20:29:03 - перейти к сообщению
что это за id?
3. netspasibo - 21 Декабря, 2015 - 23:55:17 - перейти к сообщению
PID.
С ошибкой написал.
4. Kibor - 22 Декабря, 2015 - 01:56:10 - перейти к сообщению
 netspasibo пишет:
Тем более, изменения размера окна влияет ведь на функцию?

не влияет.
указатель тот же остался. просто если зачем то то после запуска бота изменил позицию размер окна, то надо заново получить указатель, так как при его получение записывается структура указателя.
wind.width = ширина окна
wind.height = высота окна
wind.left = позиция по x относительно левого края экрана
wind.top = позиция по y относительно левого края экрана
wind.widthclient = ширина клиетской части окна (без системного меню и рамки)
wind.heightclient = высота клиетской части окна (без системного меню и рамки)
wind.leftclient = позиция клиетской части по x относительно левого края экрана
wind.topclient = позиция клиетской части по y относительно левого края экрана
wind.name = название окна
wind.class = название класса

 netspasibo пишет:
то определяет верно, но при запуске нескольких одинаковых окон скрипт начинает сбоить и, как бы, "пропускает" функции или "не замечает" их

ничего не сбивается... правильно надо пользоваться getwindow.

по pid нет смысла определять, так как не будет известна структура указателя и он меняется.

такой же смысл будет использовать такой скрипт для определения HWND который можно использовать в своей программе потом (запустить - навести мышь на окно нужное)
CODE:
int pos_size_edit0[1][4];
string text_edit0[1];

pos_size_edit0[0][0]=4; pos_size_edit0[0][1]=5; pos_size_edit0[0][2]=172; pos_size_edit0[0][3]=20;
text_edit0[0]="";

//////////

createdialog(0, EDIT, #pos_size_edit0[0][0], #text_edit0[0]);
//////////

showdialog(0, "HWND", 580, 373, 187, 59, 1, 1);
//////////

int x, y;

loop()
{
getmouse(x, y);
text_edit0[0]=format(formatwi(getwindow(1, x, y)));
sleep(100);
}



в своем скрипте так указатель задать..
CODE:
win w1=formatiw(54685);// что получили на первом
win w2=formatiw(265434);// что получили на втором


но опять же не будет заполнена структура.

поэтому используйте такой самый удобный подход.
CODE:
win w1, w2;
int x, y;

textout(0, 20, 20, "наведите мышь на окно 1 и нажмите Ё.", 0);
while (getkeystate(192)==0) sleep(10);
getmouse(x, y);
w1=getwindow(1, x, y);
while (getkeystate(192)==1) sleep(10);

textout(0, 20, 20, "наведите мышь на окно 2 и нажмите Ё.", 0);
while (getkeystate(192)==0) sleep(10);
getmouse(x, y);
w2=getwindow(1, x, y);
while (getkeystate(192)==1) sleep(10);
5. netspasibo - 22 Декабря, 2015 - 16:15:33 - перейти к сообщению
Как раз использую этот самый удобный подход.
Скрипт начинает сбоить после того, как персонажа оглушают (или сон, или еще какой дебаф приводящий к временнному бездействию), он не может реагировать на действия Кибор'а и все, начинаются сбои. Getcolor перестает находить (видеть) определенные заданные по координатам пиксели, и пошло поехало.
В функцию CREATE_INTERFACE нет возможности добавления картинок небольшого размера?
Будет ли реализовано?
6. Kibor - 22 Декабря, 2015 - 22:56:04 - перейти к сообщению
 netspasibo пишет:
Скрипт начинает сбоить после того, как персонажа оглушают (или сон, или еще какой дебаф приводящий к временнному бездействию), он не может реагировать на действия Кибор'а и все, начинаются сбои. Getcolor перестает находить (видеть) определенные заданные по координатам пиксели, и пошло поехало.

И что? из за этого меняется HWND окна ?
Идентификация окна не при чем тут.
Я не знаю что там он перестает видеть, проверить просто. Включить потоковое обновление игры в вкладке графика и посмотреть как будет видеть Кибор игру когда такое случается.
(Добавление)
 netspasibo пишет:
В функцию CREATE_INTERFACE нет возможности добавления картинок небольшого размера?
Будет ли реализовано?

нет..

Powered by ExBB FM 1.0 Final