Передача данных между двумя графическими интерфейсами Windows

Вопрос или проблема

У меня есть две версии программы для Windows, которая используется для управления информацией о сотрудниках. Эта программа управляется через графический интерфейс. Старая версия программы заполнена данными, и я хотел бы перенести эти данные в новую версию. Продавец программного обеспечения хочет взять с меня плату за этот перенос, поэтому я хотел бы узнать, могу ли я сделать это самостоятельно. Есть ли какое-то программное обеспечение, которое поможет мне написать робота для этого?

Это должно быть что-то, что может искать в окне определенный текст, например “имя”, а затем кликать в окне относительно местоположения этого текста, чтобы скопировать имя в буфер обмена.

По предпочтению, я хотел бы библиотеку, с которой можно общаться на:
Python, Java, C++

Я уже использовал Sikuli, но не думаю, что у неё есть необходимые возможности для поиска текста.

Библиотека Python pywinauto может вам помочь. Если программа имеет нативные элементы управления (написанные с помощью MFC, WTL или аналогичных; некоторые приложения WinForms могут быть автоматизированы), то это то, что вам нужно. Не стесняйтесь задавать более подробные вопросы о pywinauto по тегу StackOverflow. Я один из сопровождающих pywinauto.

Также существует простой помощник для GUI pywinauto: SWAPY. Он может быстро показать, какие элементы управления видимы для pywinauto.

На странице документации pywinauto также перечислены другие подобные проекты:

Инструменты на Python:

Инструменты на других языках скриптов:

Другие бесплатные инструменты:

Ответ или решение

Для передачи данных между двумя GUI-программами на Windows, особенно если одна из версий программы содержит необходимые данные о сотрудниках, вы можете использовать несколько доступных инструментов и библиотек, которые позволят автоматизировать этот процесс.

Рекомендуемые библиотеки и инструменты:

  1. pywinauto:
    Это мощная библиотека для Python, предназначенная для автоматизации взаимодействия с окнами приложений Windows. Она позволяет вам получать доступ к элементам интерфейса, управлять ими и извлекать текст. Если ваше приложение использует нативные элементы управления (написанные, например, с использованием MFC или WTL), вы сможете легко взаимодействовать с ними.

    • Документация: pywinauto
    • Полезный инструмент: SWAPY — графический помощник для анализа доступных элементов интерфейса.
  2. PyAutoGUI:
    Это еще одна библиотека для Python, которая позволяет взаимодействовать с приложением через управление курсором, ввод текста и создание скринов экрана. Она менее специализирована, чем pywinauto, и не поддерживает нативные элементы управления так хорошо, но все же может быть полезна для более простых задач.

  3. AutoIt:
    Это бесплатный инструмент, который позволяет автоматизировать задачи в Windows с помощью своего собственного скриптового языка. AutoIt предоставляет широкий набор функций для: управления окнами, нажатия клавиш и работы с буфером обмена.

  4. Win32::GuiTest (Perl):
    Если вы знакомы с Perl, вы можете использовать библиотеку Win32::GuiTest, которая также поддерживает взаимодействие с GUI Windows.

Шаги для автоматизации передачи данных:

  1. Изучите структуру GUI:
    Используйте инструменты, такие как SWAPY или интерфейс для pywinauto, чтобы понять, как распределены элементы интерфейса в старой версии программы. Это поможет вам определить, где и какие данные вам нужно извлекать.

  2. Скрипт для извлечения данных:
    Напишите скрипт на Python с использованием библиотеки pywinauto, который будет:

    • Открывать старую версию программы.
    • Перебирать поля, искомые вами (например, "имя", "фамилия"), и извлекать из них данные.
    • Сохранять извлеченные данные в паттерн (например, список или CSV-файл) для дальнейшей загрузки.
  3. Скрипт для ввода данных в новую версию:
    Напишите еще один скрипт, который будет:

    • Открывать новую версию программы.
    • Чтение данных из сохраненного файла.
    • Перемещение по элементам интерфейса и ввод необходимых данных в соответствующие поля.
  4. Тестирование:
    Обязательно протестируйте свои скрипты на небольшом объеме данных, чтобы убедиться, что они работают правильно, прежде чем применять их к полному массиву данных.

Заключение

Автоматизация передачи данных между двумя GUI-программами на Windows может потребовать некоторых усилий и экспериментов, но с использованием рекомендованных инструментов и библиотек вы сможете справиться с задачей без привлечения поставщика программного обеспечения. Удачи!

Оцените материал
Добавить комментарий

Капча загружается...