Автокликер для 1С




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

               Системные требования:

Win7 и выше. Работает под сборкой не ниже .NET 3.5.

               Установка:

Первый раз для регистрации компоненты необходимо запустить 1С от имени администратора. После запуска обработки непосредственно из 1С, необходимо зарегистрировать ActiveX компонент. Регистрация компоненты происходит автоматически при первом запуске записи скрипта, либо при выборе пункта меню «Сервис»-«Переустановить». После этого обработка автоматически закрывается.  Если компонента зарегистрирована успешна, появится диалоговое окно c надписью «Registration successfull!»

Функционал приложения «Автокликер»:

1.       В режиме записи:

— фиксирует активное в данный момент окно, узнает его заголовок и полный путь к исполняемому модулю (программе)

— узнает текущую культуру (язык и раскладку)

— узнает размеры активного окна

— фиксирует все типы кликов мыши, включая сдвиг и скролл

— фиксирует все действия на клавиатуре, включая нажатия  на функциональные клавиши , сервисные  клавиши, комбинации клавиш.

— запоминает буфер обмена

Полученный в итоге скрипт можно сохранить в файл с расширением “ssq”.

2.       В режиме воспроизведения:

— регулирование скорости воспроизведения, путем выставления общей задержки между командами скрипта

— неограниченное количество циклов воспроизведения скрипта

— подмена содержимого буфера обмена и любого другого текста, путем изменения в самом скрипте

— анимация движения курсора мыши (для создания полной имитации действий живого человека) и правильной реакции автоматизируемых  приложений.

Области применения:

1.       Автоматический вход в клиент-банки и скачивание выписок и реестров для  1с, с автоматической закачкой файлов в 1С.

2.       Автоматическая печать некоторых типов  документов, в которых автоматизация не предусмотрена, ввиду устаревшего интерфейса либо отсутствия линковочных модулей.

3.       Отправка извещений пользователям любых современных месенджеров, лишенных OLE (Skype, WhatsApp,Telegramm, ViPole)

4.       Запуск  сложных регламентных административных скриптов, в том числе  автоматические создания бэкапов с условиями, а также отсылка отчетов по почте.

5.       Создание обучающих скриптов, например  для новых пользователей, либо альтернатива видеоурокам.

6.       Создание презентации возможностей ПО (1С, в частности) , либо подсказки разработчиков для людей, проводящих презентации.

7.       Логирование всех действий пользователя ( для служб безопасности или для собственного контроля).

8.       Автоматическое заполнение шаблонов документов MS WORD,Excel (например, договоров)  данными из 1С без навыков владения VBA.

9.       Частичная или полная замена ручного труда операторов по введению информации, хранящейся в разных местах интерфейса информационных систем, особенно это касается типовых конфигураций 1С на поддержке.

Команды Автокликера:

$CurrentProgram

$Title

$WindowRect

$Screenshot

$CurrentLanguage

$Mouse

$Key

$ClipboardBegin/$ClipboardEnd

$Wait

Принцип заполнения команд можно увидеть после самостоятельной записи скрипта с помощью кнопки «Начать запись».

Запись в скрипт ведется построчно.

Работа с Автокликером:

При первом запуске ОБЯЗАТЕЛЬНО запустить 1С от имени администратора, чтобы зарегистрировать используемый в программе ActiveX объект.

Для записи скрипта нажмите на кнопку «Начать запись».

Начнется автоматическая запись скрипта, при каждом новом событии будут добавляться строки скрипта, при этом в строке состояния будут отражены координаты курсора и кнопки.

Для прекращения записи нажмите на кнопку «Остановить запись».

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

Для воспроизведения скрипта нажмите на кнопку «Воспроизвести».

Настройки Автокликера:

Настройки записи

1. Группировать события: В момент записи все однотипные события, такие как события мыши и клавиатуры, будут группироваться в одну строку. Плюс такой возможности — визуальная компоновка скрипта. Минус — при воспроизведении сгруппированные строки не будут визуально смещаться на очередном шаге скрипта. 

2. Сохранять значения буфера обмена:  если флаг проставлен, весь буфер обмена копируется в текущую строку. Если не собираетесь менять ничего в буфере обмена, а будете просто его сохранять и вставлять — то флаг можно не проставлять.

3. Сохранять путь к исполняемым модулям: В процессе испытаний выяснилось, что на Windows10 пути запускаемых модулей могут не показываться  из-за повышенной безопасности. Рекомендуется не включать при эксплуатации на Windows 10 и Windows Server2012.

4. Сохранять скриншоты: если проставлен этот признак, то в ключевые моменты действий пользователя (например при открытии программ или при сохранении файлов) будут сохраняться файлы с расширением JPG — скриншоты активных окон. Тем самым позволяя визуализировать последовательность действий и запомнить информацию, которая была в момент записи скрипта в активном окне.

Если каталог хранения скриншотов выбран, файлы изображений будут сохраняться туда, если же поле пустое, файлы со скриншотами будут сохраняться в каталог, указанный в переменных среды WINDOWS.

Настройки воспроизведения

1. Задержка воcпроизведения: задержка в миллисекундах между каждой строкой скрипта. Чем она больше, тем медленнее исполняется скрипт. В некоторых случаях задержка просто необходима. Например при старте программ или диалоговых окон. Если задержки между запуском окна и вводом данных не будет, то событие не отработает, т.к. нужно некоторое время для ожидания завершения отрисовки окна на экране. Задержкой может стать несколько пустых строк, а также команда $Wait (Редактирование — Вставить WAIT)

2. Количество повторов: можно зациклить исполнение скрипта.

3. Анимировать курсор мыши: показывает движение мыши между кликами.

4. Воспроизводить построчно: показывает пошагово исполнение скрипта. Если события не сгруппированы, то анимации курсора  не произойдет.

Версия 2.0.18

1. Добавлено сохранение скриншотов: если проставлен этот признак, то в ключевые моменты действий пользователя (например при открытии программ или при сохранении файлов) будут сохраняться файлы с расширением JPG — скриншоты активных окон. Тем самым позволяя визуализировать последовательность действий и запомнить информацию, которая была в момент записи скрипта в активном окне.

Если каталог хранения скриншотов выбран, файлы изображений будут сохраняться туда, если же поле пустое, файлы со скриншотами будут сохраняться в каталог, указанный в переменных среды WINDOWS.

2. В сервисе добавился пункт «Получить список процессов» — выводит информацию о всех процессах в памяти с их ID.

49 Comments

  1. madonov

    Охохох, вот это троянец.

    Можно много чего узнать о пользователях. Добавьте возможность получения изображений с экрана и вебки =) .

    Reply
  2. slava_1c

    )) Ну такой «незаметный» троянец в виде 1с))

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

    Reply
  3. starik-2005

    В Линухе есть такая забавная утилитка xdotool, которая умеет двигать мышкой, нажимать на кнопки и прочее. Я как-то в Еве-онлайн целый скрипт написал на php, добывающий с астероидов руду — чисто прикольно было смотреть на то, как самолет летит в пояс астеров, находит там нужный астер, пилит с него руду, потом летит на станцию, продает и так по кругу. И ни один 1С не пострадал.

    Ну и ремот контрол громкости, фулскрин и прочее через веб-сервер.

    Reply
  4. Pr-Mex

    Есть ещё SikuliX.

    Умеет картинки распознавать.

    Reply
  5. slava_1c

    (1) Угу, сделал.

    Reply
  6. ruizave

    Autoit позволяет писать более гибкие скрипты, которые кроме того можно упаковать в exe и выполнять на клиенте без зависимостей.

    Кроме того там есть возможность работать не только с координатами, но и id элементами системы.

    Правда он только под win если мне память не изменяет.

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

    Reply
  7. slava_1c

    (6) Так здесь весь смысл в том, что эта обработка для 1С и исполняется из 1С. Т.е. можно автоматизировать любые действия и реакцию на события из других программ прямо внутри 1С. ActiveX компонент написан специально для использования в 1С. С событиями от мыши и клавиатуры и кучей других полезных функций. И позволяет записать действия и выполнить их без знания программирования вообще. Такого функционала у Autoit нет.

    Reply
  8. ruizave

    (7) Понятно. Из текста возникло впечатление, что это просто кликер. Если эта обработка работает напрямую с событиями 1С, то это другой уровень, конечно.

    Reply
  9. slava_1c

    (8) Спасибо. Сначала для решения своих задач я действительно использовал и Autoit и iMacros… но вот для контроля обратной связи в 1с приходилось создавать файлы, что совсем уж было костылями. Поэтому и решил написать эту компоненту а потом обработку. Она же решила проблемы с отправкой сообщения из 1С пользователям через месенджер. Надеюсь и другим поможет! )))

    Reply
  10. KroVladS

    (0)

    1С:Предприятие 8.3 (8.3.9.2033)

    Windows 10 x64

    «Получить список процессов» — работает.

    «Начать запись», тыкаю в калькулятор, платформа падает.

    Reply
  11. veyron21

    Очень интересная штука. Правда не до конца понял в чем ее принципиальное отличие от остальных кликеров, запускающихся из-под Windows.

    А за реализацию респект, кажется, такого тут еще не делали.

    Reply
  12. slava_1c

    (10)Ого. А если не калькулятор, а ворд или эксель? Вообщем какой нибудь другой процесс? Нет у меня к сожалению такого стенда — испытывал на win7, win serv 2008, платформы 8.3.9.1818 и 8.2.19.130 — там все норм

    Reply
  13. necropunk

    (12) Думаю, имеется в виду платформенный калькулятор.

    Reply
  14. slava_1c

    (11) Спасибо. А принципиальное отличие в том, что написан специальный контрол, в котором есть методы обратной связи с 1С.

    Reply
  15. slava_1c

    (14)На вышеперечисленных стендах любые действия не приводят к краху платформы. Есть вероятность, что в вин10 закрыли возможность получения части инфо о процессе.

    Reply
  16. KroVladS

    (12)

    Уточнения.

    Запись и воспроизведение работает внутри окна 1с.

    Как только тыкаю вне окна 1с, на панель задач, на любое другое приложение платформа падает.

    Reply
  17. slava_1c

    (16)Понятно. Ок, поищу 10 винду, буду тестить. А два экземпляра 1с между собой работают?

    Reply
  18. slava_1c

    Нашел платформу сервер2012 — в ней оказалась та же самая проблема, что описана Владимиром в Win10.

    Оказалось, при попытке считать информацию о запускаемом модуле в некоторых программах или просто эксплорере, 1с висла намертво.

    И это не смотря на то, что получение данной информации было внутри попытки.

    Добавил в настройки соотвествующую галку.

    Перезалил обработку с версией 2.1.5 с исправленным ActiveX.

    Reply
  19. alex_4x

    Очень интересно. А как осуществляется контроль ? В фоне записывать все действия мышка и клавиатура и экран? Это же потом анализировать — с ума сойдешь.

    Чувствую что вещь очень нужная и полезная, но вот как применить и для чего — идей нет.

    Можете по подробней описать те случаи когда вы уже используете эту компоненту ? И правильно я понимаю, что 1С должна быть обязательно активным приложением? Переключиться например в другое приложение, найти контрол по коду и ткнуть его или сделать Ctrl V Enter — можно?

    Reply
  20. slava_1c

    (19) Эта компонента у моих клиентов используется для отправки сообщений из месенджера и для автоматического скачивания информации о транзакциях, естественно при запущенной 1С — в ней написаны соответствующие обработки. В принципе,примерные области ее применения описаны вверху в самой публикации. «Переключиться например в другое приложение, найти контрол по коду и ткнуть его или сделать Ctrl V Enter — можно? «- разумеется. компонента для этого и разработана. Она может даже переключаться в оконном RDP! Можно также анализировать запуск любого приложения по наименованию не только запускаемого файла, но и по имени документа открытого в этом приложении, или, например, сайта.

    Reply
  21. slava_1c

    (19)

    И правильно я понимаю, что 1С должна быть обязательно активным приложением?

    Нет. Как раз компонента отсылает данные из активных приложений в 1С из которой была запущена. В виде фана попробуйте запустить эту обработку и запустить paint.net и там что то нарисовать (в фото к публикации есть примерчик))

    Reply
  22. slava_1c

    (21) а потом запустить записанный скрипт на исполнение.

    Reply
  23. v3rter

    (19)

    Это же потом анализировать — с ума сойдешь

    Теоретически это несложно: изнутри Windows все элементы всех интерфейсов выглядят в виде наборов окон — каждая надпись, кнопка, галка и т.п. — со своими идентификаторами и именами, действие «нажать мышкой» выглядит как поиск нужного системного «окна», считывание его координат и вызова команды «ткнуть мышкой» в конкретную область экрана. Сложно реализовать практически )

    Reply
  24. slava_1c

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

    Reply
  25. slava_1c

    Вот:

    Reply
  26. Makushimo

    Я правильно понял, что эта штуковина записывает действия пользователя и потом ДЕЛАЕТ все что записала так, как если бы это делал человек?

    А как тогда понимать «Создание обучающих скриптов, например, для новых пользователей, либо альтернатива видео-урокам» ?

    То есть в процессе обучения скрипт на компьютере пользователя будет что-то делать, а пользователь будет просто тупо смотреть. И ему не надо будет ничего повторять. Как же он чему то научится?

    Или имелось в виду, когда разрабу лень гонять к пользователю, то он просто пишет скрипт, который показывает, как работает его новая фича?

    Reply
  27. RinGo

    Вопрос: можно ли использовать данный инструмент для обработки события «при нажатии клавиши, комбинации клавиш»?

    Reply
  28. tjurikov_ivan

    На УФ вообще не работает? попробовал перевести, после нажатия на кнопку начать запись падает платформа.

    Reply
  29. slava_1c

    (26) «Я правильно понял, что эта штуковина записывает действия пользователя и потом ДЕЛАЕТ все что записала так, как если бы это делал человек? » — Да, конечно! Одно но. В приведенном примере она не пишет маршрут мыши — только клики и в этих точках координаты, а эмуляция перемещения — это цикл перемещения мыши от одной координаты к другой по кратчайшему расстоянию.

    Но т.к. событие от мыши приходит постоянно — можно и маршрут писать.

    При открытии программ лучше поставить побольше задержку, или поставить побольше пустых строк, чтобы приложение успело открыться. (в описании есть этот момент)

    На счет создания обучающих роликов. В моем видении это так : Открывается эта обработка, нажимается кнопка «Запись», далее 1С сворачивается и открывается программа, в которой необходимо обучаться, возможно еще один экземпляр 1с, а может и совершенно другая программа. Когда обучающий скрипт записан, его можно сохранить и запускать в любое время, А в случае одинакового расположения программ на других рабочих столах — и на других компьютерах тоже, хотя данный момент можно универсализировать, запуская программу через Start-Run

    Reply
  30. slava_1c

    (27) Да, конечно!

    Reply
  31. slava_1c

    (28) Если четно на УФ даже не планировал.

    Reply
  32. tjurikov_ivan

    (31)не знаю как действует компонента, как думаете проблема в ней или искать проблему в винде или плаформе?

    Reply
  33. slava_1c

    (32) Может быть проблема и в винде, например было тут, что под 10-й не работала — оаказалось получение информации о запускаемом модуле в 10-й винде только под полными правами. Иначе — в ошибку вываливается. Даже если это в попытку запихнуть. Если же этой опцией не пользоваться — все работает.

    Reply
  34. tjurikov_ivan

    (33)ааа, ну тогда наверно в винде, у меня как раз win 10)

    Reply
  35. slava_1c

    Тогда вот здесь галочки стоять не должно и надеюсь все заработает.

    Reply
  36. tjurikov_ivan

    (35)Мне кажется я понял, но не уверен.

    Как вы вставили на форму элемент ActiveX? не получается его скопировать на УФ, может проблема в этом? хотя по сути он же подключает компоненту через comОбъект.

    У меня закрывается клиентское приложение после строки:

    Кликер.НачатьЗапись();

    Reply
  37. slava_1c

    (36) «не получается его скопировать на УФ» — А это как?

    В УФ же нет возможности вставки ActiveX компонента на форму — только как макет. 1С давно еще решил что это лишнее))

    Вы его можете зарегистрировать и вызывать как COM-объект — все переменные, функции и события будут доступны .

    Я думаю правильнее будет так: Вы эту обработку запустите в этой же базе в неуправляемом режиме, проверьте что все работает на текущей системе, а уж потом колдуйте над УФ.

    Reply
  38. KroVladS

    toAll

    Аналогов никто не встречал?

    В идеале 1с-spy++.

    Reply
  39. user1086933

    Скажите, а на winserver 2012 работать не будет?

    Reply
  40. slava_1c

    По идее — раз на 10 работает, то и на 2012 должен работать, не пробовал.

    Reply
  41. user1086933

    (40) понял, спасибо. Отпишусь.

    Reply
  42. peper-

    (3) Добывать руду, говорите? Лет 7-8 назад (может больше) знакомые написали свой клиент для Евы, который сначала тоже только майнил. Но ребята его быстро допилили до того, что там был целый бизнес-процесс: он начинал с регистрации триал-аккаунта, потом экипировал новый аккаунт кораблем и вооружением, потом летел мочить пиратов и собирать награды, а когда время тестового аккаунта кончалось, то все ценное передавалось на новый аккаунт. При этом, все это было многопоточно, т.е. создавался не один аккаунт, а десятки. И пиратов они мочили группой, а потому нападали на таких, на которых не всякий рядовой игрок полезет. Работал «хак» настолько хорошо, что вскоре стал приносить ребятам миллиарды внутриигровых кредитов, которые с помощью несложных пассов превращались в тысячи реальных долларов в неделю. Но, правда, недолго музыка играла. Разработчики их быстро вычислили (все-таки там тоже люди подкованные сидят, что и по самой игре понятно), связались с ними и объяснили, что если такие действия будут повторяться, то за ними придут не в виртуальной, а в реальной жизни. Ребята не стали рисковать и прикрыли лавочку. Но у меня от тех времен остались их подарки (типа Armageddon). В Еву правда уже тоже лет 7 не заходил — она мне быстро приелась. Так что может и аккаунта уже нет…

    Reply
  43. starik-2005

    (42) хорошая сказка на ночь, качественная)))

    Reply
  44. peper-

    (43) ой, я вас умоляю! У меня фантазия не настолько развита. Все основано на реальных событиях. Только про даты я не уверен. Пытался вспомнить когда же на самом деле играл в Еву последний раз. И получается, что было это не 7, а лет 10-12 назад, если не больше. Играть мы начали в 2003-м году, когда еще в SAP работал. И я не больше 2-3 лет продержался. Поэтому, наверное, ребята игру ломали тоже не 7, а 10-12 лет назад.

    P.S. Так понимаю, что среди 1Сников не часто встречаются люди, пишущие на C или других «нормальных» языках, а потому, наверное, вам поверить в возможность реверс инжиниринга протокола игры трудно. Но я за несколько лет до этого на FreeHost в Warbirds летал (в самом начале 2000-х). Так что… Люди с головой и не такое могут.

    Reply
  45. peper-

    (43) Восстановил аккаунт в Еве, чтобы проверить даты. Играл даже меньше года — с конца августа 2004 по февраль 2005-го (проверил по платежам). А корабль у меня в ангаре не Армагеддон, а Апокалипс. Но с моим жалким опытом в игре на такой я никак не мог заработать, сонласитесь.

    Reply
  46. starik-2005

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

    ЗЫ: посмотрел, сколько апокалипсис ща стоит — 118М — это за неделю можно поднять на нулевом акке плекс стоит 1.5ККК.

    Reply
  47. peper-

    (46) в еве большая инфляция за эти годы, судя по всему. Раньше баттлшипы были топовыми кораблями, если правильно помню. А сейчас там какие-чуть ли не космические станции можно купить. Или я чего-то путаю? Так что наверное, сейчас это не круто. А в 2004-м я сам смог только на Каракал заработать за время игры.

    Reply
  48. starik-2005

    (47) я тогда както разок зашел и вышел, не особо пошло, да и интернет был не супер. Но на сколько я знаю, т2 БШ уже тогда были, другое дело, что на триальном акке выучить БШ с пушками приличными было нереально)))

    Reply
  49. peper-

    (48) я пока играл платил, но заходил нечасто, так как было много работы.

    А тогда надо было реально маньячить, чтобы время прокачки не пропускать. Поэтому у меня чар остался ламером. Даже не уверен, что я мог БШ управлять.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *