Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

UoKit.com Форумы _ UO Pilot _ Написать скритп

Автор: SkAzKa1234 28.12.2018, 6:13

Ребят, я тут впервые извиняюсь если не по теме.
Я пользуюсь UoPilot давно и для себя уже написал простенькие скрипты для работы. У меня появилась задумка которую без понятий как реализовать. Мне нужно чтоб из окна копировался текст и записывался в текстовой документ в столб и так же нужно будет чтобы нажатиями двух клавиш я мог из этого документа подставлять строки. Чтобы было понятней допустим.
1. 123
2. 1234
4. 1546
5. 143546
Вот 5 строк записанные через пилот, и я хочу чтобы клавишами стрелок верх вниз (к примеру) он подставлял мне нужную строку, нажал вниз соответственно подставилась нижняя строка, верх предыдущая и т.д. вручную подставлять это гемор, за сутки таких строк около 300-400 нужно обработать. Если есть возможно подскажите как самому это написать, какие команды нужны. Я не слоупок, основы работы программы знаю и обучаюсь быстро. smile.gif

Автор: cirus 28.12.2018, 13:10

Цитата
какие команды нужны

http://uopilot.tati.pro/index.php?title=Load_array
http://uopilot.tati.pro/index.php?title=Save_array
http://uopilot.tati.pro/index.php?title=Write
http://uopilot.tati.pro/index.php?title=Список_функций

Автор: SkAzKa1234 29.12.2018, 1:31

Цитата(cirus @ 28.12.2018, 13:10) *

http://uopilot.tati.pro/index.php?title=Load_array
http://uopilot.tati.pro/index.php?title=Save_array
http://uopilot.tati.pro/index.php?title=Write
http://uopilot.tati.pro/index.php?title=Список_функций


Я сегодня посидел, и пока получилось только использовать команду write, долго пытался использовать Save_array так и не вышло, я не понял какие координаты ему нужны чтобы он знал откуда брать данные

Автор: DarkMaster 29.12.2018, 1:38

Рекоменду менее абстрактно описать задачу, скорее всего путь которым вы идете не самый правильный (вы загнали ответы в рамки описанные в начале темы).
Не стесняйтесь выкладывать код. Напиали, не работает? Выкладывыайте - ткнем пальцем, что не так. Поверьте, когда челоек выкладывает код, то вероятность успешного решения проблемы очень сильно увеличивается.

Автор: SkAzKa1234 29.12.2018, 1:43

Цитата(DarkMaster @ 29.12.2018, 1:38) *

Рекоменду менее абстрактно описать задачу, скорее всего путь которым вы идете не самый правильный (вы загнали ответы в рамки описанные в начале темы).
Не стесняйтесь выкладывать код. Напиали, не работает? Выкладывыайте - ткнем пальцем, что не так. Поверьте, когда челоек выкладывает код, то вероятность успешного решения проблемы очень сильно увеличивается.


set %arr [1 1]
save_array %arr [#array_138 #array_68] C:\Users\тест\Desktop\Скрины\q.txt
stop_script

Как пример, я щас сижу пишу, текстовой документ создается но я написал координаты на экране где находится окно с данными (начало этого окна) но что ему еще нужно чтобы скопировать от туда нужную мне инфу, там просто цифры 11 значные одной строкой в этом окне

Автор: cirus 29.12.2018, 2:00

Для примера, как скопировать слово из блокнота:

Код
showwindow windowhandle minimize  // свернуть пилот
wait 1000
double_kleft 28, 95     // двойной клик по слову, чтобы выделить его (указать нужные координаты)
wait 300
sendex_down ^c         // нажать Ctrl+C (копировать текст в буфер)
wait 100
sendex_up ^c            // отпустить Ctrl+C
wait 300
get clipboard $s         // получить содержимое буфера
wait 100
hint (20 clRed 500 500 -1 -1 ($s))  // показать что было получено из буфера
write (C:\123abc.txt $s \r\n)          // дозаписать в файл
end_script

Автор: SkAzKa1234 29.12.2018, 2:15

Цитата(cirus @ 29.12.2018, 2:00) *

Для примера, как скопировать слово из блокнота:
Код
showwindow windowhandle minimize  // свернуть пилот
wait 1000
double_kleft 28, 95     // двойной клик по слову, чтобы выделить его (указать нужные координаты)
wait 300
sendex_down ^c         // нажать Ctrl+C (копировать текст в буфер)
wait 100
sendex_up ^c            // отпустить Ctrl+C
wait 300
get clipboard $s         // получить содержимое буфера
wait 100
hint (20 clRed 500 500 -1 -1 ($s))  // показать что было получено из буфера
write (C:\123abc.txt $s \r\n)          // дозаписать в файл
end_script



Да, примерно так я уже писал только я использовал GetSelectedText присваивал переменную и после уже записывал через wrait, но единственное я не понял что сделать чтобы запись шла в столб, все в одну строку записывало, можно конечно пробелы поставить, но желательно в столб

Цитата(SkAzKa1234 @ 29.12.2018, 2:06) *

Да, примерно так я уже писал только я использовал GetSelectedText присваивал переменную и после уже записывал через wrait, но единственное я не понял что сделать чтобы запись шла в столб, все в одну строку записывало, можно конечно пробелы поставить, но желательно в столб


Я понял, не дописал \r\n в команде ))))))
Очень благодарен за ответы, но я думал что есть возможность зная адрес строки или окна в программе копировать от туда данные, без самого копирования текста, ибо с кликами и выделения требуют команду на время, что очень важно.

Автор: cirus 29.12.2018, 2:18

Код
write (C:\123abc.txt $s \r\n)

\r\n это переход на новую строку.
Код
write (C:\123abc.txt текст1 \r\n)
write (C:\123abc.txt текст2 \r\n)
write (C:\123abc.txt текст3 \r\n)
end_script

Допишет 3 строки в файл.

Автор: SkAzKa1234 29.12.2018, 2:18

Цитата(SkAzKa1234 @ 29.12.2018, 2:15) *

Да, примерно так я уже писал только я использовал GetSelectedText присваивал переменную и после уже записывал через wrait, но единственное я не понял что сделать чтобы запись шла в столб, все в одну строку записывало, можно конечно пробелы поставить, но желательно в столб
Я понял, не дописал \r\n в команде ))))))
Очень благодарен за ответы, но я думал что есть возможность зная адрес строки или окна в программе копировать от туда данные, без самого копирования текста, чтобы исключить возможную ибо с кликами и выделения требуют команду на время, что очень важно.


set $t GetSelectedText
write (C:\Users\тест\Desktop\Пример\прим.txt $t \r\n )
end_script

вот код который я написал, действия с выделением пропустил, пока сам выделяю. Он работает но мне не совсем это нужно((((

Автор: cirus 29.12.2018, 2:33

Цитата
не совсем это нужно

Цитата
Рекомендую менее абстрактно описать задачу

Автор: SkAzKa1234 29.12.2018, 2:42

Мне нужно не через эмуляцию кликов и копирования, а именно чтобы зная адрес окна, куда вводится инфа (а это просто цифры) он мог скопировать от туда и записать в блокнот, при это не используя команду с мышью и клавиатурой. Я не знаю как еще написать чтобы меня поняли. Возможно ли записать адрес окна именно как к примеру адрес к папке или файлу.


Эскизы прикрепленных изображений
Прикрепленное изображение

Автор: sutra 29.12.2018, 2:50

А как Пилот скопирует без мыши и без клавиатуры? Под гипнозом? Теоретически возможно, но я наверное это сделать не смогу, ну или придётся долго шерстить память, пока найдёшь адрес где лежит это число.

Автор: SkAzKa1234 29.12.2018, 2:52

Цитата(sutra @ 29.12.2018, 2:50) *

А как Пилот скопирует без мыши и без клавиатуры? Под гипнозом? Теоретически возможно, но я наверное это сделать не смогу, ну или придётся долго шерстить память, пока найдёшь адрес где лежит это число.


А через хендл окна?
Workwindow handle

Автор: sutra 29.12.2018, 2:58

И почему такое нежелание использовать ну хотя бы мышь? Быстренько ваша мышь всё сделает и Вы даже не успеете это заметить. Моя мышь пашет на Благо Пилота круглые сутки, а я в это время играю в другую игру и всё нормально, работаю с документами, сижу в инете, вот с Вами сейчас веду переписку.

Цитата
А через хендл окна?

Хендл окна - это его имя. Это способ понять из КАКОГО окна копировать.


Ну само то собой ничего не может делаться, ведь так? Ну да, есть хендл окна. Но это просто число, само по себе что оно даёт?

Цитата
основы работы программы знаю и обучаюсь быстро

Давайте учиться заново, может и я чего в этой теме не знаю, тоже подучусь.

Автор: SkAzKa1234 29.12.2018, 3:01

Цитата(sutra @ 29.12.2018, 2:53) *

И почему такое нежелание использовать ну хотя бы мышь? Быстренько ваша мышь всё сделает и Вы даже не успеете это заметить. Моя мышь пашет на Благо Пилота круглые сутки, а я в это время играю в другую игру и всё нормально, работаю с документами, сижу в инете, вот с Вами сейчас веду переписку.
Хендл окна - это его имя. Это способ понять из КАКОГО окна копировать.


Да дело в том что программа в которой я работаю написана на Делфи 7 и любит иногда шалить и выдавать ошибки, и бывает так что даже вручную скопировать не получается, нажимаешь на окно откуда хочешь скопировать а бегущая строка у тебя в центре программы бегает и только через пару манипуляций можно исправить а мне нужна стабильность, поэтому поинтересовался, в любом случае благодарю за ответы, и скажу от себя пилот ну ОООООЧЕНЬ выручает обязательно пожертвую автору на бутылку коньяка biggrin.gif .

И да, хотел узнать в пилоте есть возможность делать клики вторым курсором не трогая основной ну или после перемещений вернуть мышь на исходную позицию?

Автор: sutra 29.12.2018, 3:05

Сначала про строки и столбцы. %arr[1 1] %arr[1 2] %arr[1 3] - это мы работаем со строкой из 3-х столбцов. %arr[1 1] %arr[2 1] %arr[3 1] - это мы работаем с 3-мя строками содержащими 1 столбец.

Цитата
делать клики вторым курсором не трогая основной ну или после перемещений вернуть мышь на исходную позицию?

Можно, но не всегда. В Вашем случае уверен можно.

left - клик без захвата окна - предпочтительно, но иногда не работает, тогда kleft - но это уже с захватом окна, что для Вас видимо неприемлемо.

Автор: SkAzKa1234 29.12.2018, 3:07

Цитата(sutra @ 29.12.2018, 3:04) *

Сначала про строки и столбцы. %arr[1 1] %arr[1 2] %arr[1 3] - это мы работаем со строкой из 3-х столбцов. %arr[1 1] %arr[2 1] %arr[3 1] - это мы работаем с 3-мя строками содержащими 1 столбец.
Можно, но не всегда. В Вашем случае уверен можно.


не очень понял почему в моем
какая команда это делает?

Цитата(sutra @ 29.12.2018, 3:05) *

Сначала про строки и столбцы. %arr[1 1] %arr[1 2] %arr[1 3] - это мы работаем со строкой из 3-х столбцов. %arr[1 1] %arr[2 1] %arr[3 1] - это мы работаем с 3-мя строками содержащими 1 столбец.
Можно, но не всегда. В Вашем случае уверен можно.

left - клик без захвата окна - предпочтительно, но иногда не работает, тогда kleft - но это уже с захватом окна, что для Вас видимо неприемлемо.


Эммммм, ясно)

Автор: sutra 29.12.2018, 3:10

Все команды мыши начинающиеся с k - используют захват окна, а значит и деактивацию того окна с которым Вы сейчас работаете. Если всё равно и всё автономно, то можно и kleft. Пробуйте и смотрите.

Цитата
не очень понял почему в моем

Ну потому что Ваша прога на Делфи не ставит никаких защит по эмуляции кликов.


Почитайте справку по командам (вам ссылки давали). Вот с мышки и начните. Попробуйте ткнуть для начала куда-нибудь.

Автор: SkAzKa1234 29.12.2018, 3:12

Цитата(sutra @ 29.12.2018, 3:05) *

Сначала про строки и столбцы. %arr[1 1] %arr[1 2] %arr[1 3] - это мы работаем со строкой из 3-х столбцов. %arr[1 1] %arr[2 1] %arr[3 1] - это мы работаем с 3-мя строками содержащими 1 столбец.
Можно, но не всегда. В Вашем случае уверен можно.

left - клик без захвата окна - предпочтительно, но иногда не работает, тогда kleft - но это уже с захватом окна, что для Вас видимо неприемлемо.


если вы не поняли суть моего вопроса то не нужно включать всезнайку
Про заполнение в ткст док мне уже ответили, а про left и kleft очень смешно

Цитата(sutra @ 29.12.2018, 3:10) *

Все команды мыши начинающиеся с k - используют захват окна, а значит и деактивацию того окна с которым Вы сейчас работаете. Если всё равно и всё автономно, то можно и kleft. Пробуйте и смотрите.
Ну потому что Ваша прога на Делфи не ставит никаких защит по эмуляции кликов.
Почитайте справку по командам (вам ссылки давали). Вот с мышки и начните. Попробуйте ткнуть для начала куда-нибудь.

Да да да)))))) вы забавный. Всего доброго.

Автор: sutra 29.12.2018, 3:17

Цитата
если вы не поняли суть моего вопроса

Ну почему же, я прекрасно понял вопрос. Скопировать что-то куда-то используя хендл.


Цитата
Всего доброго.

И Вам всего доброго и с Наступающим. Извините, ежели обидел. Но просто как-то вопросы не вязались с заявленным имиджем. Вообще-то Пилот - это автокликер, и значит кликать (мышкой) - это его основная работа.

Автор: SkAzKa1234 29.12.2018, 3:27

Цитата(sutra @ 29.12.2018, 3:12) *

Ну почему же, я прекрасно понял вопрос. Скопировать что-то куда-то используя хендл.


про хендл я не знал. Это значит что мне нужно начать с изучения клавиш мыши?
Ладно, пойду инструкцию читать по работе с мышкой, а то только на клаве могу буковки тыкать а на мыше не подписано что куда к чему. smile.gif

Цитата(sutra @ 29.12.2018, 3:17) *

Ну почему же, я прекрасно понял вопрос. Скопировать что-то куда-то используя хендл.
И Вам всего доброго и с Наступающим. Извините, ежели обидел. Но просто как-то вопросы не вязались с заявленным имиджем. Вообще-то Пилот - это автокликер, и значит кликать (мышкой) - это его основная работа.


Будь так то только макросы можно было штамповать, тогда и толку от него особо не было бы, это достаточно многофункциональная программа.

Цитата(SkAzKa1234 @ 29.12.2018, 3:22) *

про хендл я не знал. Это значит что мне нужно начать с изучения клавиш мыши?
Ладно, пойду инструкцию читать по работе с мышкой, а то только на клаве могу буковки тыкать а на мыше не подписано что куда к чему. smile.gif
Будь так то только макросы можно было штамповать, тогда и толку от него особо не было бы, это достаточно многофункциональная программа.


Я не профессионал и не программист но очень много сходств с языком с+, с#
Массивы и переменные как бы, определение цветов циклы и прочее
Достойная программа и автор молодец

Автор: cirus 29.12.2018, 4:25

А этот текст вообще можно выделить?
Это что-то вроде выпадающего списка? Можно попробовать получить текст через http://uopilot.tati.pro/index.php?title=Getwindow
Для примера. У вас будет другое дерево окон, соответственно и код другой:

Код
log clear
log mode compact
set #h findwindow(Диалог)      // поиск окна
set #temp GetWindow (#h child) // узнать хендл дочернего окна
log GetWindowtext(#temp)       // имя окна
set #temp GetWindow (#temp next) // следующее окна
log GetWindowtext(#temp)         // имя окна
end_script

Прикрепленное изображение

Автор: SkAzKa1234 29.12.2018, 8:28

Цитата(cirus @ 29.12.2018, 4:25) *

А этот текст вообще можно выделить?
Это что-то вроде выпадающего списка? Можно попробовать получить текст через http://uopilot.tati.pro/index.php?title=Getwindow
Для примера. У вас будет другое дерево окон, соответственно и код другой:
Код
log clear
log mode compact
set #h findwindow(Диалог)      // поиск окна
set #temp GetWindow (#h child) // узнать хендл дочернего окна
log GetWindowtext(#temp)       // имя окна
set #temp GetWindow (#temp next) // следующее окна
log GetWindowtext(#temp)         // имя окна
end_script

Прикрепленное изображение


Очень интересная программа, в том окне из которого я хочу достать, да можно скопировать.
Но есть еще кстати одно окно и в нем нельзя нельзя, туда только забивается инфа и можно листать вниз но с помощью InqSoft Window Scanner у меня получилось достать из него текст, но мне интересно можно ли его редактировать так чтобы он изменился в этом окне.
Можно в директ написать?

Автор: SkAzKa1234 29.12.2018, 10:31

Цитата(cirus @ 29.12.2018, 4:25) *

А этот текст вообще можно выделить?
Это что-то вроде выпадающего списка? Можно попробовать получить текст через http://uopilot.tati.pro/index.php?title=Getwindow
Для примера. У вас будет другое дерево окон, соответственно и код другой:
Код
log clear
log mode compact
set #h findwindow(Диалог)      // поиск окна
set #temp GetWindow (#h child) // узнать хендл дочернего окна
log GetWindowtext(#temp)       // имя окна
set #temp GetWindow (#temp next) // следующее окна
log GetWindowtext(#temp)         // имя окна
end_script

Прикрепленное изображение


сложновато тут уже, кроме названия самого окна, у меня больше в логах ничего не пишет


Эскизы прикрепленных изображений
Прикрепленное изображение

Автор: cirus 29.12.2018, 11:25

http://uopilot.tati.pro/index.php?title=Поиск_пути_к_дочернему_окну

Автор: SkAzKa1234 29.12.2018, 20:24

Цитата(cirus @ 29.12.2018, 11:25) *

http://uopilot.tati.pro/index.php?title=Поиск_пути_к_дочернему_окну


Я разобрался спс)
А вот вопрос по поводу ListBox на делфи 7, та прога InqSoft Window Scanner может как изменить список в нем на тот который я хочу?

Автор: DarkMaster 29.12.2018, 21:03

Цитата
А вот вопрос по поводу ListBox на делфи 7, та прога InqSoft Window Scanner может как изменить список в нем на тот который я хочу?

Вообще если оно возвращается, как title окна, то да. Но если оно так возвращает, то вы сможете его изменить и через пилот:
setwindowtext

Автор: SkAzKa1234 29.12.2018, 22:49

Цитата(DarkMaster @ 29.12.2018, 21:03) *

Вообще если оно возвращается, как title окна, то да. Но если оно так возвращает, то вы сможете его изменить и через пилот:
setwindowtext


Не получается переименовать((((
set #ownerHandle findwindow (Прием заказов)
set #tmp getwindow (#ownerHandle child)
set #tmp getwindow (#tmp child)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp child)
set #tmp getwindow (#tmp child)
set #childHandle getwindow (#tmp next)
set #a SetWindowtext (#childHandle Pilot)
End_script

В этом списке нельзя строки выбирать как отдельные дочерние окна, оно захватывается целиком. Можно только листать и выбирать какие-либо.

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)