Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

UoKit.com Форумы _ Плагины и доп. ПО _ Плагин для получения информации об окне.

Автор: DarkMaster 18.8.2015, 23:52

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

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]



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

Автор: Cockney 19.8.2015, 0:12

Немного не понял задачу плагина, но.... можно ли выдернуть информацию о кнопках и других контролах?

Автор: cirus 19.8.2015, 2:38

Этот вариант плагина нормально запускается и работает.

Автор: DarkMaster 19.8.2015, 5:49

Цитата
Немного не понял задачу плагина

Задача в 1 очередь была вытянуть состояние видимио/минимизировано/максимизировано и т.д. Остальное зацепил мимоходом с целью иметь полноценный инструмент. В т.ч. чтобы иметь максимум данных для идентификации безымянных окон, например, тех же кнопок, которые зачастую являются отдельными окнами.
Цитата
можно ли выдернуть информацию о кнопках и других контролах?

Конкретнее.

Цитата
Этот вариант плагина нормально запускается и работает.

оно и те нормально запускались и работали. Просто нужны были дллки для дебаг версий, которые не идут в стандартном установщике.

Автор: Cockney 19.8.2015, 11:29

Цитата(DarkMaster @ 19.8.2015, 5:49) *

Конкретнее.



Размер кнопок, полей ввода. Доступность контрола для ввода,нажатия и др.

Автор: DarkMaster 19.8.2015, 18:30

Цитата
Размер кнопок

Как правило - это и есть размер окна. Кнопка - это отдельное окно.
Цитата
полей ввода

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

Цитата
set #a WindowStatus.enabled

Т.е. по факту это все есть. Координаты только надо дополнительно допилить относительные от родительского окна. Тут пока еще стоит вопрос, как получить окно верхнего уровня, но это в любом случае решаемо (не хочу через перебор делать).

Автор: DarkMaster 19.8.2015, 19:36

Цитата
set #a WindowStatus.top (hdf)
log на переднем плане: #a

Вот это кстати вернет будет ли именно в данное окно нажатие sendex'ом и другие действия происходящие именно в активное на данный момент окно.

Автор: cirus 20.8.2015, 2:17

Цитата
Вот это кстати вернет будет ли именно в данное окно нажатие sendex'ом и другие действия происходящие именно в активное на данный момент окно.

А оно работает? Всегда 0 показывает, хотя окно активно и на переднем плане.

Автор: DarkMaster 20.8.2015, 11:40

Хм... Где-то отвалил, когда под релиз немного причесывал. Работало smile.gif

Автор: DarkMaster 20.8.2015, 14:54

Поправил. Ковыряю фишечки дальше. Релизить буду хоть что-то толковое.
Cockney, надо что-то из этого? Пара вещей заинтересовала меня.
http://www.vsokovikov.narod.ru/New_MSDN_API/Window/str_guithreadinfo.htm

Автор: Cockney 20.8.2015, 18:34

Цитата(DarkMaster @ 20.8.2015, 14:54) *

Cockney, надо что-то из этого?




Ну, что мне пока хотелось бы, уже вроде как есть, осталось что-то придумать для прямого нажатия на контролы, не через пилотовский клик, но это другая история.

Я конечно не знаю, как в играх может пригодится весь этот набор плюшек, но думаю что и этого достаточно. Хотя.. вам видней.

Автор: DarkMaster 20.8.2015, 18:55

Цитата
Ну, что мне пока хотелось бы, уже вроде как есть, осталось что-то придумать для прямого нажатия на контролы, не через пилотовский клик, но это другая история.

Кнопки ожидают эвента, обычно либо клика либо клавиши. Прямое нажатие сводится к посылу этого эвента в кнопку, т.е. в окно кнопки. Кароче:
Код
set #lastWorkWindow workwindow
set workwindow хендл_кнопки
send217 {Spacebar}
set  workwindow #lastWorkWindow

Писанины многовато, но это должно сделать желаемое.

Автор: Cockney 20.8.2015, 22:06

хорощо,просто не знал, про данный метод

Автор: DarkMaster 21.8.2015, 1:31

Цитата
хорощо,просто не знал, про данный метод

Зато как много узнал, что оказывается можно уже сейчас smile.gif Польза wink.gif

Автор: cirus 21.8.2015, 2:28

Если убрана галка автоматически отрывать лог, при этом галка выводить в лог ошибки загрузки плагинов стоит, то после закрытия пилота выскакивает пару окон с ошибками.

Автор: DarkMaster 21.8.2015, 15:59

21.08.2015 18:57:04, WKnight
починил падение

Автор: DarkMaster 24.8.2015, 0:42

Глобальный апдейт.
Починен upper(он же parent).
Добавлен комбайн поиска окон по имени и классу.
Добавлена возможность указать хендл.
Модифицированы все функции в части корректности и контроля ошибок.

Автор: cirus 24.8.2015, 1:10

Начиная с 39 строки выдает: символ не распознан (pos:1 'WindowsStatus.minimized (хендл окна)')

Автор: DarkMaster 24.8.2015, 1:40

Вообще везде или только в 39 строке? Только что запустил - все отработало нормально.
Через set запускаешь?

Автор: cirus 24.8.2015, 1:47

Все set начиная с 39 строки и массив с данными об окне пуст.


Эскизы прикрепленных изображений
Прикрепленное изображение

Автор: DarkMaster 24.8.2015, 1:53

Ща на почту скину пилота, на этой версии попробуй.

А ты дллку в WindowStatus переимновал?

Автор: cirus 24.8.2015, 1:57

Цитата
А ты дллку в WindowStatus переимновал?

Теперь работает.

Автор: DarkMaster 24.8.2015, 1:59

имена плагинов жестко привязаны к именам дллок.
Наверняка есть пачка багов. По сути это ночная сборка, финд только дописал. Никогда бы не подумал, что эта хреновина займет 250 строк + 200 дубля для дочерних.

Автор: cirus 24.8.2015, 2:41

Цитата
<fullClassNameFlag> - флаг полного имени.

Имени класса.
Я так понял поиск работает при условии что у окна есть имя?
Цитата
Наверняка есть пачка багов.

Куда ж без них.


Эскизы прикрепленных изображений
Прикрепленное изображение

Автор: DarkMaster 24.8.2015, 11:57

Цитата
Я так понял поиск работает при условии что у окна есть имя?

Да, но имя может быть пустым. Попробуй вместо имени указать **. Это был последний допил, не тестил, но работать должно.


То что окно минимизировано не означает, что в его стиле установлены флаги невидимости, недоступности, поверх всех окон. Надо продумать описание, чтобы не было путаницы. Возьми windowscanner и все станет более-менее понятно по флагам - там есть кнопочки управления видимостью/доступностью и т.д. Про "на переднем плане" косяков много, его нужно переделывать по сути, там есть не совсем понятные моменты, как его вытаскивать.

Автор: cirus 24.8.2015, 12:24

Цитата
Да, но имя может быть пустым. Попробуй вместо имени указать **. Это был последний допил, не тестил, но работать должно.

Работает, если ** поставить.

Автор: cirus 25.8.2015, 3:23

Цитата
%a WindowStatus.parentTop (workwindow)
#a WindowStatus.upper (workwindow)
#a WindowStatus.ready (workwindow)

Допиши set в описании под спойлером.
Цитата
set %a[1] WindowStatus.find (1111 *Окно чата* TchatFrm)
log найдено: %a [1 1] %a [1 2] %a [1 3] %a [1 4]
Возвращает хендлы найденных окон в элементы массива:
%arr [1 1]
%arr [1 2]
%arr [1 3]

Подправь имена массива, а то отличаются.
Кстати, все найденные окна записываются в %a [1 1]. Остальные части массива пустые.

Автор: DarkMaster 25.8.2015, 11:16

Спасибо. Интересно как так получилось... копипастил все...

Автор: cirus 25.8.2015, 11:44

Цитата
set %a[1] WindowStatus.find (1111 *Окно чата* TchatFrm)

Скорее всего так:
Код
set %a WindowStatus.find (1111 *Окно чата* TchatFrm)

Автор: DarkMaster 25.8.2015, 11:59

А вот это с теста осталось smile.gif

Автор: cirus 11.11.2015, 13:46

Цитата
А вот это с теста осталось smile.gif

Я бы даже сказал, что оно до сих пор осталось. По спойлером Find.

Автор: DarkMaster 11.11.2015, 14:19

Вроде убирал... Убрал еще раз... Спасибо.

Автор: cirus 14.2.2016, 22:23

Цитата
ready (<handle>)
0 - не минимизировано.
1 - минимизировано.
2 - хендл не существует.

Наверное должно быть:
0 - не готово
1 - готово

Автор: CAHEK-555 13.1.2017, 4:08

Приветствую участников данного форума!

DarkMaster, в описании к функции allStatus не хватает информации как с ней взаимодействовать.

Цитата
Возвращает результат:


Возможно такое описание после исследования работы функции и её ответов:
Цитата
Возвращает имя окна, имя класса окна, PID, TID и информацию об успешном получении размера, ширине, высоте, начальных и конечных координатах в элемент массива (данные разделены табуляцией): %a [1 1]
Если окон не было найдено, то результаты помещаются из соответствующих функций по порядку windowName, className, pidAndTid, windowSize (данные разделены табуляцией) в: %a [1 1]

Код
set %a WindowStatus.allStatus(#window)
log  Информация об окне:    %a [1 1].


Также хотелось видеть функцию поиска пути к дочернему окну как уже реализовано в https://forum.uokit.com/index.php?showtopic=26742, но только силами плагина (чтобы упростить написание скрипта и не загромождать код).

Автор: cirus 28.1.2017, 22:44

Удалено.

Автор: фонарик 3.8.2021, 12:23

Товарищ DarkMaster, есть очень сильные подозрения что ваш замечательный плагин для операций с числами, имеющих плавающую запятую, math.dll перестаёт работать если добавить в пилот плагин WindowStatus.dll unsure.gif Хотя лог показывает что оба они загрузились и между собой не ссорились mellow.gif

Автор: DarkMaster 9.8.2021, 18:32

Там какие-то косяки с локалями. Я уже не помню, если честно. Одна локаль убивает другую, а работают он в разных. Бред какой-то написал... но они точно ругались из-за локалей.

Автор: фонарик 19.9.2024, 19:49

Подскажите пожалуйста, работает ли данный плагин на Windows 10 ? В лог пишется:

Код
Error loading plugin: WindowStatus.dll. Load failed.
Возможно, какой-то тамашний дефендер что-то блокирует, но не знаю что и делать. А еще, десятка блочит сам пилот с рассказами, что там внутри ужасно вредный троян Trojan:Win32/Tiggre!plock, который может похищать всякие конфиденциальные данные и вообще вытворять любые непотребства, какие захочет. И со статусом вреда "Критический" дефендер уносит запускающий файл пилота куда-то в тёмные подвалы НКВД unsure.gif

Автор: DarkMaster 20.9.2024, 15:35

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

Автор: фонарик Вчера, 22:32

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

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

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

Автор: DarkMaster Вчера, 23:15

result, err, verbose = findwindow(path, [name, [class, [pos, [pid]]]])
local result, err, verbose = wnd.findwindow(nil, nil, "class_name")

readme идет в комплекте.
findwindow
result, err, verbose = findwindow(path, [name, [class, [pos, [pid]]]])
Функция ищет окна по заданным параметрам.
Каждый из параметров применяется, как фильтр.
Любой из параметров можно задать равным
nil для того, чтобы исключить из фильтрации.
Например:
result = findwindow(nil, name, class, nil, nil)
будет осуществлять поиск только по имени окна и класса.

result - массив в котором содержатся результаты.
result[1] - первое найденное окно.
result[2] - второе найденное окно.
result[...] - ...... найденное окно.
result[N] - N найденное окно.
result[N].handle - хэндл окна
result[N].name - имя окна
result[N].class - имя класса окна
result[N].x - x координата левой границы окна
result[N].y - y координата верхней границы окна
result[N].width - ширина окна
result[N].height - высота окна
result[N].pid - pid окна
result[N].tid - tid окна
result[N].exe - имя файла
result[N].path - путь к каталогу с файлом
result[N].fullpath - полный путь к exe

err - код ошибки. 0 - успех.

verbose - текстовая расшифровка ошибки

path - путь к исполняемому файлу (exe).
Задается, как паттерн для regexp.
Проверка происходит в полном пути.

name - заголовок окна. Задается как паттерн
для regexp.

class - имя класса окна. Задается как паттерн
для regexp.

pos - таблица с положением и размером окна.
pos.min_x - начальная X координата области поиска
pos.min_y - начальная Y координата области поиска
pos.min_width - минимальная ширина окна
pos.min_height - минимальная высота окна
pos.max_x - конечная X координата области поиска
pos.max_y - конечная Y координата области поиска
pos.max_width - максимальная ширина окна
pos.max_height - максимальная высота окна

pid - pid процесса.

Паттерны стандартные для match в lua.
Используйте '^' для обозначения
начала строки и '$' для конца строки.
Например:
"name" - найдет все окна, где присутствует "name"
"^name" - найдет все окна, начинающиеся с "name"
"name$" - найдет все окна, заканчивающиеся на "name"
"^name$" - найдет все окна, с точным именм "name"
Так же допустимо использование ?, .*, [] и т.д.

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)