Потихоньку начинаю все приводить к товарному виду.
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