Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: m.igel on January 13, 2017, 12:43:53 PM
-
Добрый день.
Помогите, пожалуйста, разобраться в основах.
Верно ли я понимаю, что СМ может находить окна в "человеческом" понимании, т.е. "Блокнот", "Калькулятор" и т.п., но не может оперировать с элементами этих окон, такими, как адресная строка, название файла, кнопка [Сохранить] и единственный выход — искать картинки?
Положим, я хочу сохранить эту страницу. Жму Ctrl+S, указываю в адресной строке нужную папку (Ctrl+V путь), изменяю название файла, чтобы оно не было слишком длинным и не содержало запретных символов, жму [Сохранить].
В другом хорошем кликере MouseRobot это делается на раз, т.к. он распознаёт отдельные элементы. Не везде и не всегда, но как правило. Но как можно решить эту задачу в СМ?
Подозреваю, что сохранить страницу можно и без этих плясок, но я не знаю как.
В любом случае задача учебно-тренировочная, нужна в первую очередь для понимания.
-
Не умеет.
Но в твоей конкретной задаче можно после ввода имени просто нажать ENTER
KEYPRESS(#ENTER)
И обычно почти всё можно решить клавиатурными командами. Окна то известны и они не меняются. Всякие там TAB, SHIFT+TAB, ALT, стрелки, энтеры и прочие эскейпы.
-
Не умеет.
Но в твоей конкретной задаче можно после ввода имени просто нажать ENTER
KEYPRESS(#ENTER)
И обычно почти всё можно решить клавиатурными командами. Окна то известны и они не меняются. Всякие там TAB, SHIFT+TAB, ALT, стрелки, энтеры и прочие эскейпы.
Так не интересно ;)
Я неспроста хотел папку назначения поменять. А так-то да, можно и табами подогнать. Пять табов и все дела ;D
Может есть ещё более правильные команды?
-
в CM два варианта найти окно (в понимании ОС) - по имени (части) или по координатам
так что элемент-кнопку "Со&хранить" найти можно. а вот поле имени файла уже не выходит.
нет поиска окна по имени класса. может попросим Джонни расширить функционал WNDFND?
-
Расширить бы хорошо было, но и проблемы в 5 табах не вижу. Три коротких строки, а лучше одна подпрограмма с параметром на скрипт.
-
в CM два варианта найти окно (в понимании ОС) - по имени (части) или по координатам
так что элемент-кнопку "Со&хранить" найти можно. а вот поле имени файла уже не выходит.
нет поиска окна по имени класса. может попросим Джонни расширить функционал WNDFND?
Причем координаты абсолютные. Vint в соседней теме показал решение, когда берем свойства окна, прибавляем к координатам сколько надо и кликаем куда следует. Можно и табами, но уж как-то это коряво, неспортивно. Объекты есть, информация есть, а мы на пальцах объясняем.
Это как езда по карте и по легенде. Да, легенду сделать проще: направо, налево, возле старого дуба опять налево..." но завтра дуб срубят или не там свернул и всё, даже назад не проедешь по этой легенде. Да, пока это микроскрипт уровня "Hello world!", можно и табами по легенде. Но в целом мне это напоминает гипотетическую ситуацию, когда курьера отправляете не по адресу, а по легенде. По дюжине адресов. В городе миллионнике. Как думаете, он вернется? ;)
Так что я за расширение функционала.
элемент-кнопку "Со&хранить" найти можно.
Чота не выходит. "Родительское" окно нашел, а кнопку никак...
-
Здесь все за расширение функционала.
но завтра дуб срубят
А если завтра улицу переименуют вместе с городом? (привет декоммунизация в отдельно стоящей стране :D)
Кликер он как бы... более приземлённый и ближе к человеку. Там где ботов общающихся запросами спалить легче простого, здесь мы действуем приближённо к человеку. Да это дольше. Дольше переключить табами или лень найти по картинке/цвету.
А функционал пусть расширяется, только мало получить хэндл окна и его класс, нужны ещё функции умеющие с ними работать. Тут или получать координаты и размеры не только по hwnd, а и по хэндлу классу или получать по ним сам hwnd? что вроде не всегда можно.
Или слать им сообщение напрямую по этим данным, тоже нужна функция.
А в курсе, что на разных версиях винды одни и те же элементы могут быть разного класса? Оп, нужна функция получающая версию винды и функция получающая битность... Короче, много их.
Если бы у тебя был не академический интерес, а конкретная задача, засимбиозили бы и попробовали получить твои элементы не кликером.
-
применительно к собственным целям я б запросил
поиск у окна с известным HWND дочернего окна по имени/классу (может ещё какие признаки, добавьте)
WNDFND в его теперешнем виде – частный случай поиска дочернего Рабочему столу окошка по имени
P.S. угу, у меня точно конкретная. надо костыль будет написать
-
Здесь все за расширение функционала.
но завтра дуб срубят
А если завтра улицу переименуют вместе с городом? (привет декоммунизация в отдельно стоящей стране :D)
Кликер он как бы... более приземлённый и ближе к человеку. Там где ботов общающихся запросами спалить легче простого, здесь мы действуем приближённо к человеку. Да это дольше. Дольше переключить табами или лень найти по картинке/цвету.
А функционал пусть расширяется, только мало получить хэндл окна и его класс, нужны ещё функции умеющие с ними работать. Тут или получать координаты и размеры не только по hwnd, а и по хэндлу классу или получать по ним сам hwnd? что вроде не всегда можно.
Или слать им сообщение напрямую по этим данным, тоже нужна функция.
А в курсе, что на разных версиях винды одни и те же элементы могут быть разного класса? Оп, нужна функция получающая версию винды и функция получающая битность... Короче, много их.
Если бы у тебя был не академический интерес, а конкретная задача, засимбиозили бы и попробовали получить твои элементы не кликером.
Да, везде есть плюсы и минусы.
Аналогия с легендой, как и любая аналогия, не описывает всё.
Что касается "спалить", то это не мой случай, поэтому я и не рассматриваю такие аспекты. Подозреваю, чтобы всем угодить надо искать окно по классу, определять координаты и кликать по ним мышой. Пробема с версией винды решается "тыканием" в окно, т.е. мышкой выбираем окно и говорим, что с ним делать. Так работает MouseRobot. Тоже не идеальный вариант, но эта его фишка хороша.
С помощью кликера я делаю костыли для работы с 1С и cs-cart. Понимаю, что это неправильно, по-взрослому надо изучать сами эти системы, но некогда. Заказывать обработки и доработки нет смысла, т.к. объемы малы. Перелопачивать вручную можно, но муторно. Тут-то и выручает кликер.
-
С помощью кликера я делаю костыли для работы с 1С и cs-cart. Понимаю, что это неправильно, по-взрослому надо изучать сами эти системы, но некогда. Заказывать обработки и доработки нет смысла, т.к. объемы малы. Перелопачивать вручную можно, но муторно. Тут-то и выручает кликер.
Прям коллега. Только у меня CRM другие. И да, заказывать дорого и нецелеобразно, а учить... завтра CRM сменится и что, новую учить. Да и в моей функционала такого нет.
Поэтому кликер и + в последнее время python.
И вопрос, а нафига тебе привязка?
Что касается "спалить", то это не мой случай
Это я уже ориентируюсь на 95% посетитилей и писателей ВК :D
-
И вопрос, а нафига тебе привязка?
Привязка к кнопкам и полям?
А как без них? Не, можно обойтись тыкая по координатам, но это неправильно на мой взгляд. Вот как сделать тот же Ctrl+S на странице сайта? Да, мне это прям сейчас не нужно, но всё же...
С другой стороны в 1С полная Ж с кнопками. Они все называются одинаково, объединены в блоки, в результате тот же маусробот вроде видит кнопку, но тыкает в совершенно другую, т.к. не может различить. Пробовал Automatic Mouse and Keyboard. У него поиск по картинке хорошо сделан, но тоже какая-то ерунда с раскладками. СМ мне кажется более замороченными, зато более гибким. Больше надо писать руками, зато и написать можно больше.
Опять же, поговорить есть с кем ;-)
------------------
Ищите и обрящете!
Ctrl+S
F4
...
Profit!
-
Вот как сделать тот же Ctrl+S на странице сайта?
как обычно.
Окно браузера должно быть в фокусе.
WAIT(1)
KEYDOWN (#CTRL)
WAITMS (50)
KEYPRESS(#S)
KEYUP (#CTRL)
HALT
-
Вот как сделать тот же Ctrl+S на странице сайта?
как обычно.
Окно браузера должно быть в фокусе.
Я, конечно, человек темный, но не до такой степени ;)
Просто выразился недостаточно четко. Как нажать Ctrl+S я знаю, вопрос был в том, что делать дальше, как задать папку, куда сохранить, как изменить название сохраняемого файла.
Впрочем, кое-что я нашел — задать папку можно по F4, а дальше, видимо, табами.
-
вопрос был в том, что делать дальше, как задать папку, куда сохранить, как изменить название сохраняемого файла.
Просто вставляем из буфера сформированный полный путь с папками и именем.
-
Просто выразился недостаточно четко. Как нажать Ctrl+S я знаю, вопрос был в том, что делать дальше, как задать папку, куда сохранить, как изменить название сохраняемого файла.
Вот как раз здесь ничего сложного.
WAITMS(300)
LCLICK(867,12) // 14653306
WAITMS(300)
KEYDOWN(#CTRL)
WAITMS(50)
KEYPRESS(#S)
WAITMS(50)
KEYUP(#CTRL)
WAITMS(300)
TOCLIP("C:\Documents and Settings\Имя\Рабочий стол\Новости.html")
WAITMS(80)
KEYDOWN (#CTRL)
WAITMS (50)
KEYDOWN (#V)
WAITMS (50)
KEYUP (#V)
WAITMS(50)
KEYUP (#CTRL)
WAITMS(100)
KEYPRESS(#ENTER)
HALT
-
Просто вставляем из буфера сформированный полный путь с папками и именем.
Дык, вопрос был не в этом, а в том, как попасть в нужную стороку. Когда я про F4 допёр, стало понятно.
-
Просто выразился недостаточно четко. Как нажать Ctrl+S я знаю, вопрос был в том, что делать дальше, как задать папку, куда сохранить, как изменить название сохраняемого файла.
Вот как раз здесь ничего сложного.
...
TOCLIP("C:\Documents and Settings\Имя\Рабочий стол\Новости.html")
...
Т.е. вместо имени вбиваем полный путь с именем? От я лопух!
Только меня терзают смутные сомнения, что вместо "C:\" получим "C^\"
Во всяком случае с набором стороки именно так и происходит. Или через буфер иначе?
Не могу пока сам проверить, потому и спрашиваю.
-
Через буфер всё нормально вставится.
-
Через буфер всё нормально вставится.
Может и вставится, пока не проверял, но запись файла по несуществующем пути не идёт.
Т.е. сперва надо создать папку, а лишь потом сохранить туда файл.
-
Т.е. сперва надо создать папку, а лишь потом сохранить туда файл.
Ну и в чём проблема создать папку?
EXECUTE("cmd.exe", " /C md C:\a\b\c")
- создаст весь недостающий путь к C:\a\b\c, т.е. папки "a", "b", "c".
-
Ну и в чём проблема создать папку?
EXECUTE("cmd.exe", " /C md C:\a\b\c")
- создаст весь недостающий путь к C:\a\b\c, т.е. папки "a", "b", "c".
О! Спасибо!
Теперь никаких проблем! ;)