Поиск пути к дочернему окну: различия между версиями
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