gifts2017

AutoWin

Опубликовал Андрей Скляров (coder1cv8) в раздел Программирование - Практика программирования

Небольшой дополнительный функционал по работе с окнами в виде внешней обработки 1С. Не требует регистрации никаких dll.

Доступные функции:
- WinActivate(Заголовок);
- WinClose(Заголовок);
- WinExists(Заголовок);
- WinFlash(Заголовок,КолВо);
- WinGetProcess(Заголовок);
- WinKill(Заголовок);
- WinMinimizeAll();
- WinSetState(Заголовок,РежимОтображения);
- WinSetTitle(Заголовок,НовыйЗаголовок);
- WinSetTrans(Заголовок,Прозрачность);
- Sleep(ВремяВМиллисекундах,Режим);
- ОбработкаПрерыванияЦикла()
Описание процедур/функций находится в модуле обработки. Примеры использования:

AutoWin = Обработки.AutoWin.Создать();

// Пример 1. Получение PID текущего сеанса 1С.

СтарыйЗаголовок = ПолучитьЗаголовокСистемы();
ВременныйЗаголовок = Строка(Новый УникальныйИдентификатор);
УстановитьЗаголовокСистемы(ВременныйЗаголовок);
Сообщить(AutoWin.WinGetProcess("1С:Предприятие - "+ ВременныйЗаголовок));
УстановитьЗаголовокСистемы(СтарыйЗаголовок);

// Пример 2. Работа с отображением окна 1С.

AutoWin.WinSetState("1С:Предприятие - "+ ПолучитьЗаголовокСистемы(),0);	

// скрыть

AutoWin.Sleep(5000);	

// ждем...

AutoWin.WinSetState("1С:Предприятие - "+ ПолучитьЗаголовокСистемы(),3);	

// показать // Пример 3. Мигание окна на панели задач.

AutoWin.WinFlash("1С:Предприятие - "+ ПолучитьЗаголовокСистемы());

// Пример 4. Прозрачность окна.

AutoWin.WinSetTrans("1С:Предприятие - "+ ПолучитьЗаголовокСистемы(),150);
AutoWin.Закрыть();

 

 

Скачать файлы

Наименование Файл Версия Размер
AutoWin_v_1_2.zip 249
.1204022744 255,68Kb
25.09.09
249
.1204022744 255,68Kb Бесплатно

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Андрей Скляров (coder1cv8) 26.02.08 13:48
Вот такая бесполезная штуковина, авось кому пригодится... )
К сожалению, не видит окон внутри 1С, тока основные...
2. Дмитрий Магера (reboot) 26.02.08 17:28
Огромное спасибо !!! давно такое искал, вот только не описал кое что я топом скину не понятности!!! А так большой плюс
3. Андрей Скляров (coder1cv8) 26.02.08 21:29
(2) А чего не описал-то? ) В модуле есть комментарии...
ЗЫ: Функционал очень скромный, если будет интерес - расширю...
4. Дмитрий Магера (reboot) 27.02.08 09:13
мШелл.Run(ПроверитьПараметрНаПробелы(мПуть)+" WinFlash "+ПроверитьПараметрНаПробелы(Заголовок),0,Истина), чтоозначают осталные параметры: "0" и "Истина"? А так все работает просто ок. Идея понравилас!!!!
5. Андрей Скляров (coder1cv8) 27.02.08 09:47
(4) Это параметры метода Run объекта WScript.Shell и к вызываемой в данном случае процедуре они не относятся... Но если тебе интересно, то 0 - это вид окна запускаемого процесса, а Истина - означает дождаться завершения процесса...
6. Дмитрий Магера (reboot) 27.02.08 10:44
Спасибо, по WinFlash - у, количество раз которое будет мигать, или например пока пользователеь не щелкнет по заголовку в панели задач - такое возможно?
7. Андрей Скляров (coder1cv8) 27.02.08 11:45
(6) Могу добавить количество раз )
8. Дмитрий Магера (reboot) 28.02.08 09:01
А уж совсем наглость конечно с моей стороны, исходники увидеть? :(
9. Андрей Скляров (coder1cv8) 28.02.08 11:52
10. Алексей (a.v.petuhov) 28.02.08 18:05
А что за .exe в макете обработки лежит?
11. Андрей Скляров (coder1cv8) 28.02.08 19:05
(10) Скрипт на AutoIt, он как раз все действия и выполняет...
12. Алексей (a.v.petuhov) 29.02.08 14:38
А что это за скрипт? Без него получается никак нельзя?
Вроде бы эти функции должен уметь WSH выполнять?
По крайней мере найти открытое окно точно можно в WSH,
наверняка можно и моргать заставить и т.п....
13. Андрей Скляров (coder1cv8) 29.02.08 15:00
Кое-что можно конечно и в WSH сделать, но гораздо сложнее и больше кода... Как, к примеру, получить процесс по окну, я знаю, а вот как заставить окно мигать, на вскидку, не скажу...
Да и эту безделушку я выложил исключительно в качестве демонстрации идеи... )
14. Андрей Скляров (coder1cv8) 06.03.08 17:09
По просьбам трудящихся, добавлен параметр количество "миганий" у процедуры WinFlash :)
15. Андрей Скляров (coder1cv8) 11.03.08 17:24
Не уверен в практической ценности, но видел такой вопрос на форумах, поэтому вот:
Версия 1.2:
- реализована функция ОбработкаПрерыванияЦикла(), позволяющая пользователю интерактивно прерывать выполняемый цикл (при нажатии клавиши Ctrl+Break).
Пример:
Код
AutoWin=Обработки.AutoWin.Создать();
Пока Выборка.Следующий() Цикл
   Если AutoWin.ОбработкаПрерыванияЦикла() Тогда
      Прервать;   
   КонецЕсли;
   ...
КонецЦикла;
Если AutoWin.ВыполненоПрерывание Тогда
   Сообщить("Выполнено прерывание цикла пользователем.");
Иначе
   Сообщить("Цикл завершен.");
КонецЕсли;
AutoWin.Закрыть();
Показать полностью
16. Андрей Скляров (coder1cv8) 11.03.08 17:29
Для Sleep() добавлен параметр Режим, который позволяет переключаться между двумя вариантами реализации (с помощью команды ping или внешнего файла). Так как при использовании ping-a для таймаута в некоторых случаях выявлены проблемы.
17. Brr (brr) 20.04.09 15:34
Я думаю ничего не мешает переделать это под v7.7
18. Sergey (ra9000) 12.11.13 11:28
Привет, а можно прикрутить туда всплывающее окно(как всплывающее окно скайпа), когда 1с свернута?
19. DrZombi DrZombi (DrZombi) 03.04.15 08:49
Жаль, что ты не приложил исходники выполняемого файлика в макете. А так все прикольно...
...но пользоваться не буду ;)...