v. 1.4
Добавлено получение кода для lua.
Добавлено workwindow (childHandle) и set workwindow #childHandle.
Скрипт версия 1.4
Код
set #lua 1 // если 1- код для lua, 0 - код для языка пилота
set linedelay 0
// Версия скрипта 1.4.
// Данный скрипт предназначен для автоматической
// генерации кода поиска дочернего окна.
// Автор 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"
if #lua = 1
set %quote [1] chr(34)
set $if "if ownerHandle then"
log --lua
log local ownerHandle, tmp, childHandle = $findwindow ([[$ownerTitle]])
log $if
else
log set #ownerHandle $findwindow ($ownerTitle)
end_if
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)
if #lua = 1
log tmp = getwindo$w (ownerHandle[1][1], "child")
else
log set #tmp getwindo$w (#ownerHandle child)
end_if
set #i #sizeMiddleOwnerHandle - 1
set $direction ""
while #var <> #targetHandle
if $direction <> ""
if #lua = 1
set $beginString "tmp = getwindo"
set $middleString "w (tmp,"
log $beginString$middleString %quote [1]$direction%quote [1])
else
log $beginString$middleString $direction)
end_if
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
if #lua = 1
set $middleString "w (tmp,"
set $workwin "workwindow (childHandle)"
log childHandle = getwindo$middleString %quote [1]$direction%quote [1])
log $workwin
log end
else
set $workwin "set workwindow #childHandle"
log set #childHandle getwindo$middleString $direction)
log $workwin
end_if
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