Кибор » Кибор - Интегрированная среда разработки ботов » О программе Кибор » Версия 5.53 Определение параметров окна по определенному ранее указателю win

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

1. Kibor - 19 Апреля, 2019 - 13:46:47 - перейти к сообщению
setwindowparam позволяет обновить структуру win
wind.width = ширина окна
wind.height = высота окна
wind.left = позиция по x относительно левого края экрана
wind.top = позиция по y относительно левого края экрана
wind.widthclient = ширина клиетской части окна (без системного меню и рамки)
wind.heightclient = высота клиетской части окна (без системного меню и рамки)
wind.leftclient = позиция клиетской части по x относительно левого края экрана
wind.topclient = позиция клиетской части по y относительно левого края экрана
wind.name = название окна
wind.class = название класса

==============

Может использоваться для заполнение данной структуры если указатель win получен с помощью функции formatiw и не была заполнена ранее.

==============

Синтаксис:
CODE:
setwindowparam(wind);

Параметром принимает указатель win

Возвращает 1 если окно есть.
0 если его нет.

==============

Пример:
CODE:
external(INT, "FindWindowEx", "FindWindowExA", "user32.dll");

int handle=FindWindowEx(0, 0, "Notepad", "Безымянный — Блокнот");
win w=formatiw(handle);
setwindowparam(w);
messagebox (w.leftclient);
2. 007wan - 20 Апреля, 2019 - 02:21:19 - перейти к сообщению
Не понимаю. Для чего это и в каких случаях применяется?
3. Kibor - 20 Апреля, 2019 - 02:50:31 - перейти к сообщению
 007wan пишет:
Не понимаю. Для чего это и в каких случаях применяется?

Для разных.
К примеру для этого:
CODE:
external(INT, "FindWindowEx", "FindWindowExA", "user32.dll");

int handle=FindWindowEx(0, 0, "Notepad", "Безымянный — Блокнот");
win w=formatiw(handle);
setwindowparam(w);
w.leftclient=155;
moveclient (w);


Без setwindowparam надо для этого использовать winapi

//////////////////////////

Или к примеру для определения или окно еще существует, без получения на него указателя. Так как может быть что например имя окна изменилось и получить указатель на него невозможно по старым параметрам, а параметры новые или наличие окна надо узнать.
4. 007wan - 20 Апреля, 2019 - 03:00:08 - перейти к сообщению
Kibor , О, кажется я понял
 Kibor пишет:
для определения: окно еще существует, без получения на него указателя. Так как может быть что например имя окна изменилось и получить указатель на него невозможно по старым параметрам.
Я раньше пытался сделать, что бы изначальное имя окна, например, "Диалог" менялось при какой-то функции и получалось, что имя окна "Диалог (34%)" допустим и проценты менялись постоянно, но получить указатель не удавалось и поэтому были проблемы.
(Добавление)
Т.е если мы взяли окно указателем и изменили имя, то указатель больше окно не найден, но с этой функцией он найдет старое окно вроде бы...
(Добавление)
Спасибо за функцию. то, что нужно!)
5. Skycrew - 21 Апреля, 2019 - 03:47:14 - перейти к сообщению
Прикольная функция, спасибо!
6. 007wan - 17 Мая, 2019 - 05:38:21 - перейти к сообщению
 Kibor пишет:
setwindowparam
Всё же не понимаю когда ее использовать? сразу? почему тогда не window?
7. Kibor - 17 Мая, 2019 - 05:41:27 - перейти к сообщению
 007wan пишет:
Всё же не понимаю когда ее использовать? сразу? почему тогда не window?

Я пример использования привел. Что в этой теме, что в http://kibor-bot.com/forum/topic...85764#1558085764
8. konctantin777 - 08 Декабря, 2019 - 02:38:56 - перейти к сообщению
Здравствуйте. Нокс при просмотре рекламы, меняет размер. Функцией делаю обновить параметры- текст выводит норм, но не нажимает крестик. Что не так ?

CODE:
sleep(10000);
setwindowparam(w_KIB);
sx=w_KIB.leftclient ; sy=w_KIB.topclient;
textout(50, sx, sy, format(w_KIB.widthclient)+"="+format(w_KIB.heightclient), 1);
textout(1, sx, sy+20, "в рекламе", 1);
pause(60000);


CODE:
function кинотеатр()
{

m_KIB2: if (findimage_(#Image_19_KIB[0][0], 20, 20, 100, 1, 0, 0, -1, 0, 0, 0, -1, -1, -1, 20, 100, 1, 408, 423, 720, 480, #sum_KIB, #x_KIB, #y_KIB)>0) goto m_KIB1;
else goto m_KIB3;
m_KIB7: mouse_(20, 10, ex_KIB-30, 30, 2000); goto m_KIB2;
m_KIB3: findimage_(#Image_21_KIB[0][0], 20, 20, 20, 1, 0, 0, -1, 0, 0, 1500, 0, 0, -1, 20, 100, 1, 104, 177, 232, 322, #sum_KIB, #x_KIB, #y_KIB);
findimage_(#Image_23_KIB[0][0], 20, 20, 20, 1, 0, 0, -1, 0, 0, 1500, 0, 0, -1, 20, 100, 1, 58, 124, 272, 256, #sum_KIB, #x_KIB, #y_KIB);
textout(1, sx, sy+20, "в кине", 1);

m_KIB6: if (findimage_(#Image_25_KIB[0][0], 20, 20, 100, 1, 0, 0, -1, 0, 0, 2500, -1, -1, -1, 20, 100, 1, 459, 429, 676, 491, #sum_KIB, #x_KIB, #y_KIB)>0) goto m_KIB8;
else goto m_KIB7;
m_KIB8: реклама(); sleep(100);
setwindowparam(w_KIB);
sx=w_KIB.leftclient ; sy=w_KIB.topclient;
textout(50, sx, sy, format(w_KIB.widthclient)+"="+format(w_KIB.heightclient), 1);
goto m_KIB6;
m_KIB1: flag_check0[4]=0;
return;

}
9. Dantes3000 - 08 Мая, 2021 - 05:36:06 - перейти к сообщению
CODE:
f();

function f()
{

win wind[5]; //если обьявить глобально - ошибки не будет

int w_count = window (#wind[0], "Untitled - Notepad", "Notepad", -1);
messagebox(wind.name[0]);

}
10. Zireael - 08 Мая, 2021 - 05:38:54 - перейти к сообщению
Win объявляется только глобально.

Powered by ExBB FM 1.0 Final