Поиск пути к дочернему окну: различия между версиями
Tatikoma (обсуждение | вклад) (Новая страница: «== Описание == Данный скрипт предназначен для автоматической генерации кода поиска дочер...») |
Tatikoma (обсуждение | вклад) |
||
Строка 2: | Строка 2: | ||
Данный скрипт предназначен для автоматической генерации кода поиска дочернего окна. Скрипт находится в конце страницы. | Данный скрипт предназначен для автоматической генерации кода поиска дочернего окна. Скрипт находится в конце страницы. | ||
− | + | <br><br>После запуска скрипта нужно указать родительское окно (обычно это заголовок или рамка), навести курсор и нажать Ctrl + A, затем навести курсор на дочернее окно (то, к которому обычно делается привязка), нажать Ctrl + A. В результате в логе будет что-то вроде этого (строк может быть больше): | |
set #ownerHandle findwindow (Небеса: уникальная игра! - Игра – Yandex) | set #ownerHandle findwindow (Небеса: уникальная игра! - Игра – Yandex) | ||
set #tmp getwindow (#ownerHandle child) | set #tmp getwindow (#ownerHandle child) | ||
set #childHandle getwindow (#tmp ) | set #childHandle getwindow (#tmp ) | ||
− | + | <nowiki>#ownerHandle</nowiki> - это будет хендл родительского окна (иногда требуется для поиска в перекрытых окнах). | |
− | + | <br><nowiki>#childHandle</nowiki> - это будет хендл дочернего окна (то, к которому обычно делается привязка). | |
− | + | <br>Вставляете этот код в начало вашего скрипта и дописываете: | |
set workwindow #childHandle //сделать рабочим окном | set workwindow #childHandle //сделать рабочим окном | ||
В итоге получится: | В итоге получится: | ||
Строка 75: | Строка 75: | ||
set #i 1 | set #i 1 | ||
set #n 1 | set #n 1 | ||
− | while #startHandle | + | while #startHandle <> %middleOwnerHandle [ #i ] |
set #i #i + 1 | set #i #i + 1 | ||
set #arrToIntTmp %middleOwnerHandle [ #n ] | set #arrToIntTmp %middleOwnerHandle [ #n ] | ||
Строка 92: | Строка 92: | ||
set #i #sizeMiddleOwnerHandle - 1 | set #i #sizeMiddleOwnerHandle - 1 | ||
set $direction "" | set $direction "" | ||
− | while #var | + | while #var <> #targetHandle |
− | if $direction | + | if $direction <> "" |
log $beginString$middleString $direction) | log $beginString$middleString $direction) | ||
end_if | end_if | ||
Строка 137: | Строка 137: | ||
== Смотрите также == | == Смотрите также == | ||
[[Set]] | [[Set]] | ||
− | + | <br>[[Set windowpos]] | |
− | + | <br>[[While]] | |
− | + | <br>[[Showwindow]] | |
− | + | <br>[[Logging]] | |
== Первоисточник == | == Первоисточник == | ||
[https://forum.uokit.com/index.php?s=&showtopic=26742&view=findpost&p=195707 Форум UOPilot] | [https://forum.uokit.com/index.php?s=&showtopic=26742&view=findpost&p=195707 Форум UOPilot] | ||
[[Категория:Библиотека скриптов]] | [[Категория:Библиотека скриптов]] |
Текущая версия на 11:36, 28 августа 2019
Содержание
Описание
Данный скрипт предназначен для автоматической генерации кода поиска дочернего окна. Скрипт находится в конце страницы.
После запуска скрипта нужно указать родительское окно (обычно это заголовок или рамка), навести курсор и нажать Ctrl + A, затем навести курсор на дочернее окно (то, к которому обычно делается привязка), нажать Ctrl + A. В результате в логе будет что-то вроде этого (строк может быть больше):
set #ownerHandle findwindow (Небеса: уникальная игра! - Игра – Yandex) set #tmp getwindow (#ownerHandle child) set #childHandle getwindow (#tmp )
#ownerHandle - это будет хендл родительского окна (иногда требуется для поиска в перекрытых окнах).
#childHandle - это будет хендл дочернего окна (то, к которому обычно делается привязка).
Вставляете этот код в начало вашего скрипта и дописываете:
set workwindow #childHandle //сделать рабочим окном
В итоге получится:
set #ownerHandle findwindow (Небеса: уникальная игра! - Игра – Yandex) set #tmp getwindow (#ownerHandle child) set #childHandle getwindow (#tmp ) set workwindow #childHandle
Теперь, при каждом запуске скрипта будет найдено нужное окно и сделана привязка. Ctrl + A уже не потребуется.
Версия
1.3
Минимальная версия UOPilot
?
Скрипт
set linedelay 0 // Автор DarkMaster. // Вопросы и предложения оставляйте на форуме // в специальной теме по данному скрипту. // http://forum.uokit.com/index.php?showtopic=26742 set #handlePilot findwindow () log #handlePilot log close log clear log open set #logSizeX 300 set #logSizeY 200 set #handleLog 0 while #handleLog = 0 set #handleLog findwindow (Log Window) end_while set #x (screenwidth - #logSizeX) / 2 set #y screenheight / 4 set windowpos #x #y #logSizeX #logSizeY #handleLog log mode compact set workwindow 0 showwindow #handlePilot log Укажите родительское окно (Ctrl+A) while workwindow = 0 wait 100 showwindow #handlePilot end_while set #startHandle workwindow log Теперь укажите дочернее окно (Ctrl+A) while workwindow = #startHandle wait 100 showwindow #handlePilot end_while set #targetHandle workwindow log clear // Получаем имя родительского окна. set $ownerTitle getwindowtext (#startHandle) if $ownerTitle != "" // Генерируем только если у родительского окна есть имя. set $findwindow "findwindow" log set #ownerHandle $findwindow ($ownerTitle) end_if // Ищем от дочернего к родительскому, чтобы знать все child'ы set %middleOwnerHandle #targetHandle set #i 1 set #n 1 while #startHandle <> %middleOwnerHandle [ #i ] set #i #i + 1 set #arrToIntTmp %middleOwnerHandle [ #n ] set %middleOwnerHandle [ #i ] getwindow (#arrToIntTmp owner) set #n #n + 1 end_while set #sizeMiddleOwnerHandle size (%middleOwnerHandle) // Перебираем от родительского к дочернему. set $beginString "set #tmp getwindo" set $middleString "w (#tmp" set $w "w" set #var getwindow (#startHandle child) log set #tmp getwindo$w (#ownerHandle child) set #i #sizeMiddleOwnerHandle - 1 set $direction "" while #var <> #targetHandle if $direction <> "" log $beginString$middleString $direction) end_if // Выход за пределы массива if #i > #sizeMiddleOwnerHandle log Ошибка! log Пути от родительского окна log к дочернему не существует. log Возможные причины данной ошибки: log 1) Вы спутали местами дочернее и родительское окно. log 2) Вы промазали и нажали Ctrl+A по другому окну. log 3) Дочернее окно не принадлежит родительскому. end_if // Текущее окно совпало с одним из чайлдов, // найденных в начале скрипта if %middleOwnerHandle [ #i ] = #var set #var getwindow (#var child) set $direction child set #i #i - 1 else set #var getwindow (#var next) set $direction next end_if end_while log set #childHandle getwindo$middleString $direction) set #x (screenwidth - #logSizeX) / 2 set #y screenheight / 4 set #logSizeX 450 set #logSizeY screenheight / 8 * 5 set windowpos #x #y #logSizeX #logSizeY #handleLog set $tmp "http:/" set $tmp2 "/forum.uokit.com/index.php?showtopic=26742" log log Автор скрипта DarkMaster. log Ветка на форуме: $tmp$tmp2 stop_script
Смотрите также
Set
Set windowpos
While
Showwindow
Logging