UoKit.com Форумы > Кликер > UO Pilot
Страницы: 1, 2
bumer
Сижу я и думаю, а вот сможет ли скрипт сделать такое:
1) Переименовать названия окон Windows на нужное мне
2) Находить в этом окне нужные мне кнопки, или координаты с кнопкам
3) Жмакать по нужным найденным кнопка ориентируясь по названиям, или иным признакам
П.С. Наверно это что то нереальное, ну хотяб узнаю...
Вверх
FREEON
Цитата(bumer @ 23.9.2019, 0:11)

Сижу я и думаю, а вот сможет ли скрипт сделать такое:
1) Переименовать названия окон Windows на нужное мне
2) Находить в этом окне нужные мне кнопки, или координаты с кнопкам
3) Жмакать по нужным найденным кнопка ориентируясь по названиям, или иным признакам
П.С. Наверно это что то нереальное, ну хотяб узнаю...

Переименовать окно
А по поводу поиска кнопок по их id или названию не уверен что такое на пилоте сделать возможно...хотя можно попытаться реализовать что-то подобное с помощью PID (если более или менее стабильные названия кнопок то вполне реально сделать а если это поля ввода или какие другие формы то уже сложнее реализовать. Но в принципе задача вполне решаемая).
Вверх
bumer
Да это то что надо, с переименованием любого окна
Код

set #handle FindWindow("Калькулятор")    //найти окно калькулятора
set #a SetWindowtext (#handle Pilot)     //переименовать его в Pilot
End_script


Но вот с идентификацией кнопок, по их названию всё гораздо сложней.
Наверно нужно подыскивать что то другое, чтоб уверено распознавать название кнопок, внутри окна...

Возможно будет правильней использовать какой нить, другой метод распознавание состояние ярлычков кнопок внутри окна, чтоб ориентируясь по их внешнему виду прожимать по координатам или иным способом
Вверх
bumer
Всё таки какой замечательный этот форум, такие вкусные загатовки скрипта появляются
Вот супер, можно искать всё что угодно по картинке в области, в моем случаи кнопку:
Код

--lua
local startX, startY, endX, endY = 0, 0, 1280, 720   -- координаты поиска
        local path2 = [["C:\картинка.bmp"]]                   -- путь к картинке
        local arr, a = findimage (startX, startY, endX, endY, {path2}, 2, 70, 6, 5 )  -- поиск картинки
        hint (a)     -- результат поиска, подсказка в правом нижнем углу
        if  arr then  -- если найдена
            log ("картинка найдена в координатах X= " .. arr[1][1] .. " Y= " .. arr[1][2])
            kleft (262, 594)  -- кликнули
            wait ("2s")    -- ждать секунды
        else
            log ("Картинка.bmp не найдена")
            end

Спасибо Fors1k !
Код

init_arr %path(1 1) "C:\картинка2.bmp" "C:\картинка3.bmp" "C:\картинка4.bmp" // что искать
init_arr %snd(1 1) 2 3 4 // клавиши

for #i 1 size(%path) // цикл поиска
    set #a FindImage (0, 0 1280, 720(%path[#i]) %arr 2 70 6 5 abs) // поиск каждой картинки
    if #a > 0  // если нашли
       send %snd[#i] // действие, соответствующее найденной картинке
    end_if
end_for
end_script

или вот прожатие по приоритету...
Код

//-----Условия
set $a 100, 200 0 and 300, 400 435346
set $b 500, 600 0 and 700, 800 43475
set $c ???
//-----Условные действия
while ($a) = 1 // приоритет 1
    send A // действия приоритет 1
end_while
while ($b) = 1 and ($a) !=1 // приоритет 2
    send B // действия приоритета 2
end_while
while ($c) = 1 and ($a) != 1 and ($b) != 1 // приоритет 3
    send C // действия приоритета 3
end_while

П.С. Смотришь на всё это и душа радуется! Жаль что я не капли не программист и сам неспособен делать красивые вещи. Но некто не мешает использовать уже придуманное!
Вверх
bumer
Не захотел открывать новую тему, кажется вот эта как рас подходящая!
Скажем вот если вдруг мне надо запустить калькулятор в три окна, но чтоб окна переименовывались, так как мне надо, как это сделать?
Ну с
Код

set #handle FindWindow("Калькулятор")    //найти окно калькулятора
set #a SetWindowtext (#handle Pilot)     //переименовать его в Pilot
End_script

Понятно...
Но как заставить его запускать .eхе файл, потом найденное окно переименовать Pilot1, запустить ещё раз, переименовать Pilot2... Pilot3 это повторить три раза?
П.С. надеюсь у меня получилось описать то что нужно...
Вверх
Levo222
Не знаю как на пилоте, но на хоткее у меня было так

Код
//----------------------------------------------------------------------
// Ctrl R для переименования окон, если вы запускаете их вручную.
//----------------------------------------------------------------------
<Hotkey ScrollLockOn Ctrl R>
    <SendPC local>
        <RenameWin "Uopilot" Uopilot1>
        <RenameWin "Uopilot" Uopilot2>
        <RenameWin "Uopilot" Uopilot3>
        <RenameWin "Uopilot" Uopilot4>
        <RenameWin "Uopilot" Uopilot5>

//----------------------------------------------------------------------
// Подпрограмма для запуска и переименования программ.
//----------------------------------------------------------------------

//Размещение координат
<Command LaunchAndRename>
    <SendPC local>
        <Run "E:\UOpilot.exe">
        <RenameTargetWin %1%>

<Command ResizeAndPosition>
<Hotkey ScrollLockOn Ctrl T>
    <SendWinM Uopilot1>    <SetWinRect 0 0 900 700>
    <SendWinM Uopilot2>    <SetWinRect 930 0 300 500>
    <SendWinM Uopilot3>    <SetWinRect 930 200 400 500>
    <SendWinM Uopilot4>    <SetWinRect 930 300 400 500>
    <SendWinM Uopilot5>    <SetWinRect 930 400 400 500>

//----------------------------------------------------------------------
// Горячая клавиша для запуска и переименования программ.
//----------------------------------------------------------------------
<Hotkey ScrollLockOn Ctrl Alt L>
    <LaunchAndRename Uopilot1>
    <LaunchAndRename Uopilot2>
    <LaunchAndRename Uopilot3>
    <LaunchAndRename Uopilot4>
    <LaunchAndRename Uopilot5>

Вверх
cirus
Цитата
запускать .eхе файл, потом найденное окно переименовать Pilot1, запустить ещё раз, переименовать Pilot2... Pilot3 это повторить три раза?

Может проще сразу запустить все окна и потом все переименовать?
Код
init_arr %arr Pilot1 Pilot2 Calc3

for #i 1 3
    exec C:\Windows\notepad.exe
end_for

set %handle FindWindow("Блокнот")
while size(%handle) < 3
    set %handle FindWindow("Блокнот")
    wait 100
end_while

for #i 1 3
    set #h %handle[#i 1]
    set #b SetWindowtext (#h %arr[#i])
end_for
End_script

Вверх
bumer
Цитата(cirus @ 28.11.2019, 12:06)

Может проще сразу запустить все окна и потом все переименовать?
Код
init_arr %arr Pilot1 Pilot2 Pilot3

for #i 1 3
    exec C:\Windows\notepad.exe
end_for

set %handle FindWindow("Блокнот")
while size(%handle) < 3
    set %handle FindWindow("Блокнот")
    wait 100
end_while

for #i 1 3
    set #h %handle[#i 1]
    set #b SetWindowtext (#h %arr[#i])
end_for
End_script


Непринципиально, главное чтоб обработало нужные окна...
------
Испытал, да запускает. Всё ОК. Но есть недостаток...
Если по какой то причине было закрыто одно из окон, при перезапуске скрипт, запускает все окна, даже если не хватало всего одно!
Было бы здорово если вначале шла проверка и запускало недостающие окно, такое возможно?
Вверх
Fors1k
Цитата(bumer @ 28.11.2019, 14:46)
Было бы здорово если вначале шла проверка и запускало недостающие окно, такое возможно?


Код
set $Name  Блокнот                          // Имя окна до
set $newName Test                           // Имя окна после
set #Quantity 3                             // Количество окон
set $app C:\Windows\System32\notepad.exe    // Приложение

for #i 1 #Quantity
    if findwindow ($NewName#i) < 1
        exec $app
        while findwindow($Name) < 1
        wait 10
        end_while
        set #rsl setwindowtext(findwindow($Name) $NewName#i)
    end_if
end_for
end_script

Вверх
bumer
Цитата(Fors1k @ 29.11.2019, 8:56)

Код
set $Name  Блокнот      // До
set $newName Test       // После
set #Quantity 3         // Количество
set $app notepad.exe    // Приложение

for #i 1 #Quantity
    if findwindow ($NewName#i) < 1
        exec $app
        while findwindow($Name) < 1
        wait 10
        end_while
        set #rsl setwindowtext(findwindow($Name) $NewName#i)
    end_if
end_for
end_script


Спасибо за очень интересное решение...
Я ведь правильно всё понял. Запускаешь скрипт на исполнение и в ручную стартуешь приложение которое вам нужно. Скрипт переименовывает окна?
Вот только он почему то у меня начинает отсчёт окон с номера 2, затем 3, а первого нет! На этом скрипт завершает работу...
Вверх
Invision Power Board © 2001-2024 Invision Power Services, Inc.
Version for Pocket PC © 2006-2024, IPBest Studio.