Связь между скриптом Python и программой win32 (разработанной в Delphi) - PullRequest
0 голосов
/ 31 марта 2011

Я новичок в Python и хочу, чтобы мой скрипт на Python мог общаться с моей программой Windows (разработанной в Delphi, FWIW).

По сути, скрипт Python будет загружать набор данных из других источников данных, и для каждой загруженной записи я буду регистрировать ее и сообщать программе Windows. Для ведения журнала я буду использовать стандартную библиотеку журналов Python, если это возможно, но какой самый простой способ сообщить программе win32, чтобы я мог показать процесс загрузки конечному пользователю?

Примечание: я знаю Python4Delphi , но это плохо документировано, и я хочу, чтобы все было просто.

Редактировать 1: Будет только один Delphi exe и несколько сценариев Python.

Спасибо.

Ответы [ 5 ]

3 голосов
/ 31 марта 2011

Если ваша Delphi-программа выполняет программу на Python, то вы можете просто написать скрипт для записи сообщений о ходе выполнения в стандартный вывод и прочитать их в вашей Delphi-программе, (Если вы делаете это таким образом, то не имеет значения, что одна программа на Python, а другая на Delphi. Любая программа может быть написана на любом языке, который вы захотите.)

1 голос
/ 31 марта 2011

Вы можете использовать именованный канал или сокет для связи между кодом Python и кодом Delphi.Для взаимодействия Python с именованными каналами вы могли бы использовать ctypes (пример здесь ).

В качестве альтернативы вы можете создать COM-компонент в Delphi и выполнять вызовы из него из Python (ActivePython включает в себя всеНужные биты Windows).

0 голосов
/ 01 апреля 2011

Я бы сделал простой сокет-сервер с одной стороны и простой сокет-клиент с другой. Теперь я могу говорить о них на одном компьютере, а также в локальной сети или в Интернете. Легко и весело.

В Python, как и в Delphi, имеется множество опций библиотеки программирования сокетов. Indy является наиболее распространенным решением в Delphi. Простые сокет-серверы, достаточно надежные для использования, также встроены в python.

Кроме того, поскольку Python переносим за пределы Windows, действительно ли вы хотите ограничить себя именованными каналами и COM и связать свою программу Python с windows навсегда?

Если, однако, ваши скрипты являются дополнением к программе Delphi, то Python4Delphi (способность вызывать функции Python и использовать их результаты) именно то, что вам нужно, и, насколько я знаю, это не очень хорошо задокументировано, потому что это так просто использовать, это не должно быть. Сколько документации вы прочитали о WriteLn до того, как сделали свой первый WriteLn('HelloWorld')?

0 голосов
/ 31 марта 2011

Используйте пакет PyWin32: http://pypi.python.org/pypi/pywin32 Он предоставляет вам доступ ко всему WinAPI.

Вы можете использовать, например, COM: http://docs.activestate.com/activepython/2.7/pywin32/html/com/win32com/HTML/docindex.html

0 голосов
/ 31 марта 2011

Моя собственная идея:

Может быть, вызвать PostMessage(WM_CopyData) в скрипте Python? Но какой самый лучший / стандартный способ вызова этого win32 API в Python?

...