Управление дочерним приложением (нажимание кнопок)
Моё предприятие покупало сервис по активации нашего продукта, поставщик услуг прекратил услуги сервера активаций, остался ручной вариант. Необходимо его автоматизировать.
Обязательное условие - среда разработки Delphi.
Временные условия - закончить надо в пределах недели.
Необходимо разработать два приложения:
Приложение 1. Запускает дочернее приложение (активируемый продукт). Читает содержание окна, текст (Другой вариант: Нажимает на нём кнопку и читает clipboard). Записывает прочитанное в базу (Обсуждается, но скорее всего MySQL, где то в Интернете). В цикле читает эту же базу (созданную запись) ожидая ответа. Прочитав ответ - заполняет окно в дочернем приложении. Нажимает в дочернем приложении кнопку.
Если были неполадки или Если всё хорошо - пишет в базу и письмо.
Прим: SMTP сервер и аккаунт для отсылки письма - будет предоставлен мной.
Приложение 2. Запускает дочернее приложение (генератор активирующего ключа). В цикле читает базу, ждёт новых записей. Получив текст из новой записи, вставляет его в окно в дочернее приложение. Пауза 1 сек. Читает второе окно в дочернее приложении. Записывает содержание в базу.
Минимальный Сервис: Просмотр базы.
Прим: дочерние приложения - исходников нет, написаны скорее всего на Delphi.
Главной "проблемой" будет - чтение текста в конкретных окнах (вероятно типа TMemo) дочернего приложения, визуально окна известны и постоянны.
Как вариант можно "нажимать кнопки" в дочернем приложении - хандлеры кнопок копируют/вставляют текст куда надо в/из буфера Виндоус.
Нажимания "мышкой" (перемещение указателя + иммитация нажатия мыши) - нежелательны, вообще хотелось бы по максимуму скрыть процесс от юзера.
"Искать" дочернее приложение не надо - оно будет запускаться всегда из разрабатываемого, то есть хандлер на него будет известен.
3. Надо продумать протокол общения через базу:
Создана запись, внесён текст
Прочитан текст
Вставлен ответ
Прочитан ответ
Выполнено действие с ответом.
- т.е. будет поле показывающее статус активирования.
Создавать БД из программы не надо, после обсуждения структуры я её создам руками и больше изменений не будет.
Если есть альтернативные предложения коммуникации между программами через Интернет - предложения приветствуются и рассматриваются (IP компьютеров неопределён, и компьютер у приложения 1 каждый раз другой).
Прим 2:
Идеальное и быстрое выполнение проекта = премия $20
Идеальное = дочерние программы запускаются свёрнутыми, юзер не видит действий. Обработка ошибок. Посылка (попытка) письма с ошибками или удачами.
- - - - -
По совету Романа я добавил файл, это ехе-шник, надо переименовать расширение. Это первая дочерняя программа, после старта выйдет окно активации - надо выбрать "ручной режим", нажать "далее", выйдет вторая форма - вот на ней и будет верхнее окно - из него надо прочитать текст, "передать" на активатор, получить ключ (текст) и вставить его во второе нижнее окно, сыммитироват нажатие "Готово". Всё. "Отписаться" о результатах.
Возможно подводный камень - эти "результаты". Если ключ принят - выйдет одна форма, Если не прринят - другая и текст с этой другой, тоже нужно выслать.