Как создать свой сайт

Идентификация окон и контролов

Скачать Кибор

О программе Кибор

Описание языка Кибор
Переменные

Операции с переменными
Логика и переходы
Указатели
Функции

Список функций
Индификация окон и контролов

Управление окнами

Клавиатура

Мышь
Контролы
Работа с изображением
Сканирование экрана и поиск изображений
Поиск 3Д моделей в играх
Определение цвета пикселя
Система
Вывод сообщений
Вспомогательные

Интерфейс программы
Текстовый редактор

Контролы управления

Визуальные инструменты Кибор

Шпион получающий информацию о окнах, контролах, координатах мыши и цвете экрана

Сканер графического интерфейса

Демонстрационные примеры
Бот для игры в пасьянс Косынка
Бот для Warspear Online

Список демонстрационных примеров...

Функции для идентификации окон и контролов.

Для работы с конкретным окном программы или каким нибудь контролом в нем необходимо индифицировать его среди множества других в системе. Для этого нужно получить на него указатель.

Для хранения указателя объявляется переменная win:
win wind;
Затем вызывается функция window с известными нам параметрами по которым мы и будем индифицировать конкретный контрол или окно.
Индификация возможна по имени окна, имени класса, рамерам, позиции, родительским окнам или контролам. Для получения нужных нам параметров рекомендуется использовать встроенный в Кибор шпион, позволяющий получить все необходимые данные о нужном объекте и сгенерировать готовый указатель на онове выбранных нами настроек.
Подробнее об этом инструменте я остановлюсь позже, а пока приведу пример индификации кнопки с цифрой 5 в стардартном калькуляторе Windows 7.
Запускаем калькулятор. Переходим в Кибор на вкладку Код. Наводим мышку на калькулятор на кнопку которая нам нужна. Нажимаем сочетание клавиш CTRL+SHIFT+S.
 Смотрим на параметры в разделе Контролы и выбираем те по которым можно выделить конкретно эту кнопку в системе.
Параметр Имя пусто, по нему не индифицируешь. Класс - Button. Почти каждая кнопка в Windows имеет такое название класса кнопки. Экранная позиция кнопки даст нам точный указатель на кнопку... пока калькулятор не будет сдвинут. Размер кнопки не подходит. В одном только калькуляторе их 26 одинаковых. Поэтому индифицируем по позиции относительно верхнего уникального контрола или главного окна. В данном случае нам подходит главное окно. Пока не будет запущено 2 калькулятора.
Выбираем галочку на вкладке котролы напротив Позиция контрола. Оставляем активной кнопку Окно и +Главное.
Пишем в редакторе кода:
win wind=
оставляем курсор после = и нажимаем на поле где прописан готовый указатель на кнопку:
 win wind=window (-1, "Button", 50, 161, -1, -1, window ("Калькулятор", "CalcFrame", -1));
Ставим в конце строки   « ; »

Указатель получен. Теперь о функции window:
В зависимости от количеста известных параметрой принимает различное количество переменных:
window("название окна") принимает один параметр string. Подходит если название окна или контрола уникальное.
window("название окна", "класс окна", win wind) индифицирует по имени, классу контрола и указателю на верхнее окно.
window("название окна", "класс окна", лев_верх_X, лев_верх_Y, шир, выс, win wind) индифицирует по имени, класу, позиции относительно верхнего контрола, размеру и указателю на верхний контрол. Если вместо указателя на верхний контрол поставить -1, позиция считается относительно левого верхнего угла экрана.
Любой параметр может быть заменен на -1. Тогда он не учитывается.
Возвращает указатель на окно или контрол или 0 если не может его индифицировать.

Пример кода нажимающего на кнопку 5 в калькуляторе:
win wind=window (-1, "Button", 50, 161, -1, -1, window ("Калькулятор", "CalcFrame", -1));
button(1, wind);

При получение указателя автоматически создается структура:
 win wind=window (-1, "Button", 50, 161, -1, -1, window ("Калькулятор", "CalcFrame", -1));
wind.width = ширина окна
wind.height = высота окна
wind.left = позиция по x относительно левого края экрана
wind.top = позиция по y относительно левого края экрана
wind.widthclient = ширина клиетской части окна (без системного меню и рамки)
wind.heightclient = высота клиетской части окна (без системного меню и рамки)
wind.leftclient = позиция клиетской части по x относительно левого края экрана
wind.topclient = позиция клиетской части по y относительно левого края экрана
wind.name = название окна
wind.class = название класса

Учтите, что все  функции управления мышью и т.д используют клиентские координаты для независимости от ширины бордюра вокруг окна, что обеспечивает независимость от версии Windows и стиля оформления.