Здравствуйте, гость ( Вход | Регистрация )

2 страниц V < 1 2  
Ответить в эту темуОткрыть новую тему
> Поиск пути к дочернему окну(скрипт)
cirus
сообщение 29.12.2018, 21:49
Сообщение #21


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26576
Пользователь №: 16.971
Возраст: 29



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
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

2 страниц V < 1 2
Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 29.3.2024, 9:48
Designed by Nickostyle