Работая в программе по расчету светопрозрачных конструкций Суперокна, приходилось периодически (раз в неделю) делать обмен данными с дилерами (их более 300). Изначально был выбран вариант через дискету, т.е. через файлы. Хотя есть автоматический вариант через сервер, но там есть свои недостатки :
- одновременно обмен ведется только с одним отделом и нужно строго определять время обмена для каждого отдела .
- автоматически могут уйти ненужные данные в дилерские отделы, если настройка справочников ведется напрямую, без использования рабочих и новых настроек
Вернемся к обмену через файлы.Процедура следующая: программа выгружает файл с настройками для определенного контрагента в нужную папку и далее идет рассылка на почту. Процесс рассылки файлов из папок по почте был давно автоматизирован. А вот выгрузка самого файла выглядела приблизительно так:
- Открываем основное меню
- Выбираем пункт меню Обмен данными
- Вводим номер отдела
- Вводим папку соответствующую по номеру этому отделу
- Нажимаем кнопку ‘Обмен’
- Ждем окончания выгрузки
И снова весь этот круг – и так более 300 раз.
После очередной такой процедуры длительностью свыше 3 часов, было принято решение написать программу, которая все эти действия будет делать за меня.
Писал на Delphi, по следующей схеме:
- отлавливаю нужное окно; SetForegroundWindow(findwindow(nil,’Суперокна 7′))
- эмулируя, нажатия клавиш, выходим в меню; keybd_event(VK_MENU, MapvirtualKey(VK_MENU, 0), 0, 0);
- таким же образом вводим нужные значения в поля ‘Путь к диску’ и ‘Отдел’;
- также эмуляцией жмем ‘Enter’; keybd_event(VK_RETURN, MapvirtualKey(VK_RETURN, 0), 0, 0);
- ждем пока файл не появится в нужной папке
1 2 | Repeat Until FindFirst('c:\obmen\'+num+'\swnd7.arc', faAnyFile, SR)=0; |
- и повторяем круг с новым значением отдела.
В итоге программа готова – моё участие более не требуется и время обмена сократилось до 1 часа. Код и ссылка на скачивание архива с программой ниже (а также коды клавиш внутри кода):
Скачать код программы botsw.pas
Скачать архив всего проекта программы botforsw.zip (Delphi)
Программа без красивостей и настроек(все в коде). Со временем добавлю опции в виде списка отделов для обмена и возможно из нее же и сделаю рассылку почтой.