Здравствуйте, гость ( Вход | Регистрация )

> Плагин для получения информации об окне.
DarkMaster
сообщение 18.8.2015, 23:52
Сообщение #1


***********

Модератор UOPilot
Сообщений: 9.743
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 29660
Пользователь №: 11.279



Потихоньку начинаю все приводить к товарному виду.

WindowStatus.Parent - готов.
WindowStatus.Find - Поиск окна по имени и классу - готов.
WindowStatus.allStatus - не допилен.
WindowStatus.Top - не допилен, работает только с потоками не принадлежащими плоту.
WindowStatus.Ready - страдает из-за WindowStatus.Top.

Предложения, что еще выдернуть по статусам окна приветствуются.
В планах есть:
Поиск окна по имени и классу.
Анализ видимости окна на экране и координаты видимой точки.

windowName (<handle>) - запрашивает имя окна.

windowName (<handle>) - запрашивает имя окна.
<handle> - обязательный параметр. Содержит в себе хендл окна о котором запрашивается информация. Для запроса информации о рабочем окне можно указать 'workwindow'(без кавычек).
Первый элемент массива содержит код ошибки:
0 - функция успешно вернула данные.
1 - внутренняя ошибка функции.
2 - хендл не существует.
Второй элемент содержит имя окна.
Код
set %a WindowStatus.windowName(workwindow)
log  имя окна:                %a [1 1]        %a [1 2]

className (<handle>) - запрашивает класс имя окна.

className (<handle>) - запрашивает класс имя окна.
<handle> - обязательный параметр. Содержит в себе хендл окна о котором запрашивается информация. Для запроса информации о рабочем окне можно указать 'workwindow'(без кавычек).
Первый элемент массива содержит код ошибки:
0 - функция успешно вернула данные.
1 - внутренняя ошибка функции.
2 - хендл не существует.
Второй элемент содержит имя класса окна.
Код
set %a WindowStatus.className (workwindow)
log  имя класса окна:         %a [1 1]        %a [1 2]

pidAndTid (<handle>) - запрашивает PID и TID процесса, которому принадлежит окно.

pidAndTid (<handle>) - запрашивает PID и TID процесса, которому принадлежит окно. PID - номер процесса, TID - номер потока.
<handle> - обязательный параметр. Содержит в себе хендл окна о котором запрашивается информация. Для запроса информации о рабочем окне можно указать 'workwindow'(без кавычек).
В первый элемент массива помещается результат запроса PID'а.
Во второй элемент массива помещается результат запроса TID'a.
Возвращает результат:
0 - ошибка функции.
4 - хендл не существует.
x - все прочие значения являются корректными ID.
Код
set %a WindowStatus.pidAndTid (workwindow)
log  PID:                     %a [ 1 1 ]
log  TID:                     %a [ 1 2 ]

windowSize (<handle>) - получение сведений о размере и расположении окна.

windowSize (<handle>) - получение сведений о размере и расположении окна. Результат функции должен принимать массив.
<handle> - обязательный параметр. Содержит в себе хендл окна о котором запрашивается информация. Для запроса информации о рабочем окне можно указать 'workwindow'(без кавычек).
Первый элемент массива содержит код ошибки:
0 - функция успешно вернула данные.
1 - внутренняя ошибка функции.
2 - хендл не существует.
Код
set %a WindowStatus.windowSize (workwindow)
log  получение размера успех: %a [ 1 1 ]
log  ширина:                  %a [ 1 2 ]
log  высота:                  %a [ 1 3 ]
log  startx:                  %a [ 1 4 ]
log  startY:                  %a [ 1 5 ]
log  endX:                    %a [ 1 6 ]
log  endY:                    %a [ 1 7 ]

minimized (<handle>) - запрашивает свернуто ли окно.

minimized (<handle>) - запрашивает свернуто ли окно.
<handle> - обязательный параметр. Содержит в себе хендл окна о котором запрашивается информация. Для запроса информации о рабочем окне можно указать 'workwindow'(без кавычек).
Возвращает результат:
0 - не минимизировано.
1 - минимизировано.
2 - хендл не существует.
Код
set #a WindowStatus.minimized (workwindow)
log  минимизировано:          #a

maximized (<handle>) - запрашивает максимизировано ли окно (развернуто на весь экран).

maximized (<handle>) - запрашивает максимизировано ли окно (развернуто на весь экран).
<handle> - обязательный параметр. Содержит в себе хендл окна о котором запрашивается информация. Для запроса информации о рабочем окне можно указать 'workwindow'(без кавычек).
Возвращает результат:
0 - не максимизировано.
1 - максимизировано.
2 - хендл не существует.
Код
set #a WindowStatus.maximized (workwindow)
log  максимизировано:         #a

visible (<handle>) - запрашивает видимо ли окно.

visible (<handle>) - запрашивает видимо ли окно. Подразумевается флаг скрытого окна, а не фактическая видимость на экране.
<handle> - обязательный параметр. Содержит в себе хендл окна о котором запрашивается информация. Для запроса информации о рабочем окне можно указать 'workwindow'(без кавычек).
Возвращает результат:
0 - невидимо.
1 - видимо.
2 - хендл не существует.
Код
set #a WindowStatus.visible (workwindow)
log  видимое:                 #a

enabled (<handle>) - запрашивает восприимчивость окна для совершения действий (клики, нажатия клавиш и т.д.).

enabled (<handle>) - запрашивает восприимчивость окна для совершения действий (клики, нажатия клавиш и т.д.).
<handle> - обязательный параметр. Содержит в себе хендл окна о котором запрашивается информация. Для запроса информации о рабочем окне можно указать 'workwindow'(без кавычек).
Возвращает результат:
0 - блокировано.
1 - доступно.
2 - хендл не существует.
Код
set #a WindowStatus.enabled (workwindow)
log  доступно:                #a

top (<handle>) - запрашивает является ли данное окно в фокусе (на переднем плане).

top (<handle>) - запрашивает является ли данное окно в фокусе (на переднем плане).
<handle> - обязательный параметр. Содержит в себе хендл окна о котором запрашивается информация. Для запроса информации о рабочем окне можно указать 'workwindow'(без кавычек).
Возвращает результат:
0 - окно не на переднем плане.
1 - окно на переднем плане.
2 - хендл не существует.
Код
set #a WindowStatus.top (workwindow)
log  на переднем плане:       #a

topmost (<handle>) - запрашивает является ли окно отображаемым поверх всех окон.

topmost (<handle>) - запрашивает является ли окно отображаемым поверх всех окон.
<handle> - обязательный параметр. Содержит в себе хендл окна о котором запрашивается информация. Для запроса информации о рабочем окне можно указать 'workwindow'(без кавычек).
Возвращает результат:
0 - не поверх всех окон.
1 - поверх всех окон.
2 - хендл не существует.
Код
set #a WindowStatus.topmost (workwindow)
log  поверх всех окон:        #a

parentTop (<handle>) - запрашивает на переднем плане находится родительское окно или нет.

parentTop (<handle>) - запрашивает на переднем плане находится родительское окно или нет. Под родительским окном подразумевается окно верхнего уровня.
<handle> - обязательный параметр. Содержит в себе хендл окна о котором запрашивается информация. Для запроса информации о рабочем окне можно указать 'workwindow'(без кавычек).
Возвращает результат:
0 - не на переднем плане.
1 - на переднем плане.
2 - хендл не существует.
Код
set %a WindowStatus.parentTop (workwindow)
log  родительское активно:    %a[1 1]    %a[1 2]

upper (<handle>) - запрашивает является ли окном верхнего уровня.

upper (<handle>) - запрашивает является ли окном верхнего уровня.
<handle> - обязательный параметр. Содержит в себе хендл окна о котором запрашивается информация. Для запроса информации о рабочем окне можно указать 'workwindow'(без кавычек).
Возвращает результат:
0 - верхнего уровня.
1 - дочернее.
2 - хендл не существует.
Код
set #a WindowStatus.upper (workwindow)
log  верхнего уровня (род):   #a

ready (<handle>) - комплексный запрос информации об окне с целью понять готовность окна к работе.

ready (<handle>) - представляет собой комплексный запрос информации об окне с целью понять готовность окна к работе. Окно считается готовым к работе, если оно:не минимизировано, видимо, доступно, на переднем плане.
<handle> - обязательный параметр. Содержит в себе хендл окна о котором запрашивается информация. Для запроса информации о рабочем окне можно указать 'workwindow'(без кавычек).
Возвращает результат:
0 - не минимизировано.
1 - минимизировано.
2 - хендл не существует.
Код
set #a WindowStatus.ready (workwindow)
log  готово к работе:         #a

allStatus (<handle>) - собирает полную информацию об окне.

allStatus (<handle>) - собирает полную информацию об окне. В стадии разработки.
<handle> - обязательный параметр. Содержит в себе хендл окна о котором запрашивается информация. Для запроса информации о рабочем окне можно указать 'workwindow'(без кавычек).
Возвращает результат:
parentAndChild (<handleParent> <handleChild>) - запрашивает является ли пара окон друг другу родительским и дочерним.

parentAndChild (<handleParent> <handleChild>) - запрашивает является ли пара окон друг другу родительским и дочерним.
<handle> - обязательный параметр. Содержит в себе хендл окна о котором запрашивается информация. Для запроса информации о рабочем окне можно указать 'workwindow'(без кавычек).
<handleParent> - хендл родительского окна.
<handleChild> - хендл дочернего окна.
Возвращает результат:
0 - не являются родительским и дочерним.
1 - являются родительским и дочерним.
2 - хендл не существует.
Код
set #a WindowStatus.parentAndChild (#handleParent #handleChild)
log  родительское и дочернее: #a

find (<fullNameFlag><caseNameFlag><fullClassNameFlag><caseClassNameFlag> <windowName> <windowClassName>) - функция поиска окон по заданным имени и классу.

find (<fullNameFlag><caseNameFlag><fullClassNameFlag><caseClassNameFlag> <windowName> <windowClassName>) - функция поиска окон по заданным имени и классу. Результат работы должен принимать массив, т.к. находятся все окна с заданными параметрами, а не только первое совпавшее.
<fullNameFlag> - флаг полного имени. В выключенном состоянии позволяет задать только часть имени. 0 - выкл, 1 - вкл.
<caseNameFlag> - флаг чувствительности к регистру букв при сравнении имени окна. 0 - выкл, 1 - вкл.
<fullClassNameFlag> - флаг полного имени класса. В выключенном состоянии позволяет задать только часть имени класса. 0 - выкл, 1 - вкл.
<caseClassNameFlag> - флаг чувствительности к регистру букв при сравнении имени класса окна. 0 - выкл, 1 - вкл.
<windowName> - имя окна, которое требуется найти.
<windowClassName> - имя класса окна, которое требуется найти.
Флаги могут задаваться как слитно, так и раздельно.
Имена окна и класса окна задаются через пробел. Если имя содержит в себе пробелы, то необходимо обособить его знаками '*' (без кавычек).
Если необходимо проигнорировать имя или класс окна, то следует задать параметр пустым с помощью символов '*', например:
Код
set %a WindowStatus.find (1111 ** TchatFrm)
set %a WindowStatus.find (1111 *Окно чата* **)

Возвращает хендлы найденных окон в элементы массива:
%arr [1 1]
%arr [1 2]
%arr [1 3]
и т.д.
Если окон не было найдено, то в:
%arr [1 1] помещается ноль.
Код
set %a WindowStatus.find (1111 *Окно чата* TchatFrm)
log  найдено:                %a [1 1]    %a [1 2]    %a [1 3]    %a [1 4]
set %a WindowStatus.find (0110 Браузер myClass)
log  найдено:                %a [1 1]    %a [1 2]    %a [1 3]    %a [1 4]



Глобальный скрипт по выводу информации об окне
Код

set linedelay 0
set #dev 1
if  #dev = 1
    log close
    log clear
    log open 1430 -10 500 1080
    log mode compact
    set #handleLogWindow findwindow ("Log Window")
    showwindow #handleLogWindow restore
    set #handleUoPilot findwindow ("UoPilot")
end_if
set $bmp ".bmp"

:start

//wait 2s
//pluginload pluginunload pluginreload
//pluginunload
//filedelete
//filecopy
//pluginload

set #window workwindow

set %a WindowStatus.windowName(#window)
log  имя окна:                %a [1 1]        %a [1 2]
set %a WindowStatus.className (#window)
log  имя класса окна:         %a [1 1]        %a [1 2]
set %a WindowStatus.pidAndTid (#window)
log  PID:                     %a [ 1 1 ]
log  TID:                     %a [ 1 2 ]
set %a WindowStatus.windowSize (#window)
log  получение размера успех: %a [ 1 1 ]
log  ширина:                  %a [ 1 2 ]
log  высота:                  %a [ 1 3 ]
log  startx:                  %a [ 1 4 ]
log  startY:                  %a [ 1 5 ]
log  endX:                    %a [ 1 6 ]
log  endY:                    %a [ 1 7 ]
set #a WindowStatus.minimized (#window)
log  минимизировано:          #a
set #a WindowStatus.maximized (#window)
log  максимизировано:         #a
set #a WindowStatus.visible (#window)
log  видимое:                 #a
set #a WindowStatus.enabled (#window)
log  доступно:                #a
set #a WindowStatus.top (#window)
log  на переднем плане:       #a
//set %a WindowStatus.top (#window)
//log  %a [1 1]
//log  %a [1 2]
//log  %a [1 3]
//log  %a [1 4]
//log  %a [1 5]
set #a WindowStatus.topmost (#window)
log  поверх всех окон:        #a
set %a WindowStatus.parentTop (#window)
log  родительское активно:    %a[1 1]    %a[1 2]
set #a WindowStatus.upper (#window)
log  верхнего уровня (род):   #a
set #a WindowStatus.ready (#window)
log  готово к работе:         #a
log ______________________
set #a WindowStatus.parentAndChild (198492 525830)
log  родительское и дочернее: #a
set %a WindowStatus.find (1111 *Окно чата* TchatFrm)
log  найдено:                %a [1 1]    %a [1 2]    %a [1 3]    %a [1 4]


Сообщение отредактировал DarkMaster - 11.11.2015, 14:18


Прикрепленные файлы
Прикрепленный файл  WindowStatus_0.9.zip ( 7,13 килобайт ) Кол-во скачиваний: 1628


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов
DarkMaster
сообщение 20.9.2024, 15:35
Сообщение #2


***********

Модератор UOPilot
Сообщений: 9.743
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 29660
Пользователь №: 11.279



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


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
фонарик
сообщение 22.9.2024, 22:32
Сообщение #3


****

Apprentice
Сообщений: 160
Регистрация: 23.11.2011
Группа: Пользователи
Наличность: 0
Пользователь №: 14.305



Цитата(DarkMaster @ 20.9.2024, 15:35) *
добавить в исключения. троянов там нет, там просто дергает через апи всю инфу.
Спасибо, вам я доверяю и советы ваши всегда одно из лучших, что можно найти здесь на форуме (IMG:style_emoticons/default/smile.gif)

Цитата(DarkMaster @ 20.9.2024, 15:35) *
в чем задача использовать данный плагин?
Эта либа умеет искать окна по классу, вообще благодать и красота (IMG:style_emoticons/default/laugh.gif)

Цитата(DarkMaster @ 20.9.2024, 15:35) *
те либы которые я выкладывал по расширению функционала не достаточны? что именно требуется?
Есть у меня подозрения, что не хватило у меня знаний и навыков правильно использовать ваши наработки по расширению функционала. Все скачал положил куда написано, написал что нужно. Копошился возился пол дня. Но не ищет вообще окна никак, кроме как по названию окна. Ну по названию окна ищет и обычный findwindow (IMG:style_emoticons/default/unsure.gif) А нужен поиск именно по классу окошка.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Сообщений в этой теме
DarkMaster   Плагин для получения информации об окне.   18.8.2015, 23:52
Cockney   Немного не понял задачу плагина, но.... можно ли в...   19.8.2015, 0:12
cirus   Этот вариант плагина нормально запускается и работ...   19.8.2015, 2:38
DarkMaster   Задача в 1 очередь была вытянуть состояние видими...   19.8.2015, 5:49
Cockney   Конкретнее. Размер кнопок, полей ввода. Доступ...   19.8.2015, 11:29
DarkMaster   Как правило - это и есть размер окна. Кнопка - эт...   19.8.2015, 18:30
DarkMaster   Вот это кстати вернет будет ли именно в данное ок...   19.8.2015, 19:36
cirus   А оно работает? Всегда 0 показывает, хотя окно ак...   20.8.2015, 2:17
DarkMaster   Хм... Где-то отвалил, когда под релиз немного прич...   20.8.2015, 11:40
DarkMaster   Поправил. Ковыряю фишечки дальше. Релизить буду хо...   20.8.2015, 14:54
Cockney   Cockney, надо что-то из этого? Ну, что мне по...   20.8.2015, 18:34
DarkMaster   Кнопки ожидают эвента, обычно либо клика либо кла...   20.8.2015, 18:55
Cockney   хорощо,просто не знал, про данный метод   20.8.2015, 22:06
DarkMaster   Зато как много узнал, что оказывается можно уже с...   21.8.2015, 1:31
cirus   Если убрана галка автоматически отрывать лог, при ...   21.8.2015, 2:28
DarkMaster   21.08.2015 18:57:04, WKnight починил падение   21.8.2015, 15:59
DarkMaster   Глобальный апдейт. Починен upper(он же parent). До...   24.8.2015, 0:42
cirus   Начиная с 39 строки выдает: символ не распознан (p...   24.8.2015, 1:10
DarkMaster   Вообще везде или только в 39 строке? Только что за...   24.8.2015, 1:40
cirus   Все set начиная с 39 строки и массив с данными об ...   24.8.2015, 1:47
DarkMaster   Ща на почту скину пилота, на этой версии попробуй....   24.8.2015, 1:53
cirus   Теперь работает.   24.8.2015, 1:57
DarkMaster   имена плагинов жестко привязаны к именам дллок. На...   24.8.2015, 1:59
cirus   Имени класса. Я так понял поиск работает при усло...   24.8.2015, 2:41
DarkMaster   Да, но имя может быть пустым. Попробуй вместо име...   24.8.2015, 11:57
cirus   Работает, если ** поставить.   24.8.2015, 12:24
cirus   Допиши set в описании под спойлером. Подправь им...   25.8.2015, 3:23
DarkMaster   Спасибо. Интересно как так получилось... копипасти...   25.8.2015, 11:16
cirus   Скорее всего так: set %a WindowStatus.find (1...   25.8.2015, 11:44
DarkMaster   А вот это с теста осталось :)   25.8.2015, 11:59
cirus   Я бы даже сказал, что оно до сих пор осталось. По...   11.11.2015, 13:46
DarkMaster   Вроде убирал... Убрал еще раз... Спасибо.   11.11.2015, 14:19
cirus   Наверное должно быть: 0 - не готово 1 - готово   14.2.2016, 22:23
CAHEK-555   Приветствую участников данного форума! DarkMa...   13.1.2017, 4:08
cirus   Удалено.   28.1.2017, 22:44
фонарик   Товарищ DarkMaster, есть очень сильные подозрения ...   3.8.2021, 12:23
DarkMaster   Там какие-то косяки с локалями. Я уже не помню, ес...   9.8.2021, 18:32
фонарик   Подскажите пожалуйста, работает ли данный плагин н...   19.9.2024, 19:49
DarkMaster   result, err, verbose = findwindow(path, [name, [cl...   22.9.2024, 23:15
фонарик   ЗАРАБОТАЛО :yahoo: readme идет в комплекте. findw...   23.9.2024, 23:13


Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 15.7.2025, 1:53
Designed by Nickostyle