Поиск пути к дочернему окну
Содержание
Описание
Данный скрипт предназначен для автоматической генерации кода поиска дочернего окна. Скрипт находится в конце страницы.
После запуска скрипта нужно указать родительское окно (обычно это заголовок или рамка), навести курсор и нажать 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