Не так давно столкнулся с необходимостью запустить из 1С и нажать пару кнопок во внешней утилитке. С запуском проблем не возникло, но на этом все и закончилось.
После недолгих поисков в интернете наткнулся на утилиту AutoIt.
AutoIt v3 — это язык для написания сценариев, напоминающий BASIC и предназначенный для автоматизации Windows GUI (графического интерфейса пользователя MS Windows). Его возможности — это методы симуляций нажатий комбинаций клавиш клавиатуры и мыши, функции управления окнами и его визуальными элементами. Решение, явно предлагаемое средствами AutoIt v3, его сценарием, обычно невозможно достичь коротким и понятным кодом какого-либо языка.
AutoIt умеет:
- Запускать на выполнение Windows и DOS программы
- Симулировать нажатия комбинаций клавиатуры (поддерживается основная масса раскладок клавиатуры)
- Симулировать перемещения указателя мыши и нажатия на ее кнопки
- Перемещать, менять размер и управлять параметрами отображения окон
- Непосредственно взаимодействовать с «управляющими элементами» (controls) окна (получать/менять надпись, перемещать, отключать, и т.п. действия)
- Работать с буфером обмена для пересылки его текстового содержания
- Читать, менять и создавать ключи и значения реестра
Утилита — это хорошо, но я хотел получить это все из 1С. В комплекте с утилитой оказалась компонента AutoItX3, которая позволяет реализовать часть возможностей AutoIt через интерфейсы DLL и ActiveX/COM.
Данная обработка позволяет посмотреть на компоненту AutoItX3 в действии. Реализовано 2 режима работы:
- Выбираем в Синтаксис-помощнике интересующий нас метод, при необходимости указываем параметры, жмем Выполнить, и любуемся результатом.
- Набираем код ручками, жмем выполнить, и также любуемся результатом). Данный вариант позволяет реализовать последовательность действий (например: запустить блокнот, ввести текст, сохранить, закрыть и вернуться в 1с).
Для использования обработки нужно запустить 1С от имени администратора и нажать на кнопку Установить компоненту.
Если интересно — скачать утилиту, а также набор документации (в том числе и на русском языке) можно отсюда
специально для меня написал????))))
Все бы хорошо, но опять нужны права админа для установки.
да, дллку надо регать, тут ничего не поделаешь.
Супер!!!!!! И под сервером будет работать!!!!!!!
Спасибо!!!!! Давно мечтал о подобном!!!!
Замечательно!
Правда, я все же так и не смог переключить раскладку клавиатуры для Send с параметрами «#k8SjZc9Dxk+»
(ну т.е. по CTRL+SHIFT) а то меня уже так «задолбало» переключаться вручную с Анг на Рус при входе в 1С:Предприятие!!!
в Delphi можно было просто вызвать LoadKeyboardLayout(‘00000419’, KLF_ACTIVATE);
Не понимаю как же передать параметры из 1с в ф-ию LoadKeyboardLayout.
Вот так не работает:
ЗапуститьПриложение(«rundll32.exe USER32.DLL, LoadKeyboardLayout 00000419, 0»);
а как надо?
Офигительный АкивХ + пример обработка.
а я блин мучился на всякие пустяки DLL-ки писал.
а ща вот…
типо этого))
//R =Autoitx3.WinMove( «Безымянный — Блокнот», «», 0, -27,200 ,200 ) ;
R =Autoitx3.WinMove( «Конфигуратор — Управление производственным предприятием, редакция 1.3», «», 0, -27,200 ,200 ) ;
))))
А есть файл синтаксис помощника на русском языке?
Для 8-ки
(8) Crush, не совсем понятно что ты хочешь. В справке к компоненте есть описание синтаксиса большинства методов (русская справка также имеется), а в 1с нужно просто эти методы вызывать с тем же синтаксисом. В обработке пример вызова процедур компоненты.
Здрасьте! 🙂
Никто не делал такую задачу с AutoIt?:
в «буфере» находится файл скопированный
в одном из объектов справочнике/документе открыт ДиалогВыбораФайла
теперь надо вставить файл из «буфера», выбрать его, и закрыть диалог?
С такой задачей не сталкивался, AutoIT вроде не работает с файлами в буфере обмена.
А с помощью горячих клавиш не получится сделать?
Я проверил ctrl+v — работает, но не понимаю пока как связать его с ДиалогомВыбораФайла
Опиши задачу подробнее. Что за чем происходит, и что должно получиться в итоге.
Идея такая:
1) Файл копируется в проводнике (правой кнопкой «Копировать»)
2)В документе (произвольном) в 1с добавляется кнопка «вставить из файла» и поле строковое «путь к файлу»
При нажатии на эту кнопку откроется диалоговое окно «ДиалогВыбораФайла»
(при этом создается специальная папка для этого документа(программно) ) и в этом диалоге вставляется ранее скопированный файл, диалог закрывается
Все действия из пункта 2) будут делаться программно (пользователь просто нажимает кнопку «вставить из файла»)
это хотелось сделать с помощью этой внешней компоненты.
Можно ли?
Готов поощерить материально за подсказку (если она увенчается успехом)
Как вариант можно сделать следующим образом:
1. Открывается диалог выбора файла, посылается комбинация Ctrl+v, Enter (по идее, при открытии диалога, курсор стоит на поле имени файла, при нажатии ctrl+v туда вставляется имя и путь к копируемому файлу);
2. Воспользоваться методом КопироватьФайл(<ИмяФайлаИсточника>, <ИмяФайлаПриемника>), где в качестве имени файла источника будет ДиалогВыбораФайла.ПолноеИмяФайла, а имя файла приемника — программно созданная папка + имя файла. Имя файла можно получить так:
Файл = Новый Файл(ДиалогВыбораФайла.ПолноеИмяФайла);
Имя = Файл.Имя;
2-ая часть супер!
еще на один шаг ближе к мечте:)
есть 2 момента:
1) не получается после открытия диалога выбора файла, отправить команду
2) … подключение по RDP к серверу, и в этом случае комбинация ctrl+v ничего не вставляет
(до этого в свойствах подключения поставил галки про доступность буфера обмена и локальных дисков,
может быть клиент rdp обновить? как можно посмотреть свойства, не в курсе случаем? а может быть дело в другом?)
А почему обязательно копировать из проводника? Нельзя сразу открывать расположение файла через 1С и там выбирать файл?
С проводника потому что… универсальнее и быстрее (для пользователя).
Хотелось сделать механизм, чтобы можно было и с почты скопировать (с Outlook’а), и файл переданный через скайп, и отсканированный файл.
(9) хотел что бы методы и свойства компоненты были доступны в синтаксис-помощнике. Но в результате понял, что проще юзать русскую справку переключаясь между окнами.
Нужная штука.
Добрый день. Не могу запустить на windows 2008×64
не регается dll (autoitx3_64.dll)
нужна для фикса загрузки локального проца при подключении по RDP.
может проблема по другому уже решена?