1

我是 Python 新手,我希望我的 Python 脚本能够与我的 Windows 程序(在 Delphi、FWIW 开发)进行通信。

基本上,Python 脚本会从其他数据源下载一组数据,对于下载的每条记录,我都会记录下来并告诉 Windows 程序。对于日志记录,如果可能,我将使用 Python 标准日志记录库,但是告诉 win32 程序以便向最终用户显示下载过程的最简单方法是什么?

注意:我知道Python4Delphi,但没有很好地记录它,我想让事情变得简单。

编辑 1:将只有一个 Delphi exe 和多个 python 脚本。

谢谢。

4

5 回答 5

3

如果您的 Delphi 程序是执行 Python 程序的程序,那么您可以简单地让脚本将进度消息写入标准输出,然后您可以在您的 Delphi 程序中读取它们。(如果你这样做,那么一个程序用 Python 而另一个用 Delphi 并不重要。任何一个程序都可以用你想要的任何语言编写。)

于 2011-03-31T16:18:57.900 回答
1

您可以使用命名管道或套接字在 Python 代码和 Delphi 代码之间进行通信。为了将 Python 连接到命名管道,您可以使用 ctypes(此处为示例)。

或者,您可以在 Delphi 中创建一个 COM 组件并从 Python 调用它(ActivePython 包含您需要的所有 Windows 位)。

于 2011-03-31T16:01:16.220 回答
0

我自己的想法:

也许调用PostMessage(WM_CopyData)Python 脚本?但是在 Python 中调用该 win32 API 的最佳/标准方法是什么?

于 2011-03-31T16:53:37.293 回答
0

使用 PyWin32 包:http://pypi.python.org/pypi/pywin32 它为您提供了对整个 WinAPI 的访问。

您可以使用例如 COM: http ://docs.activestate.com/activepython/2.7/pywin32/html/com/win32com/HTML/docindex.html

于 2011-03-31T17:06:02.337 回答
0

我会在一侧制作一个简单的套接字服务器,在另一侧制作一个简单的套接字客户端。现在我可以让他们在同一台计算机上交谈,也可以通过局域网或互联网交谈。轻松有趣。

在 python 中,套接字编程库选项比比皆是,就像在 Delphi 中一样。Indy 是 Delphi 中最常见的解决方案。python 中也内置了足够强大的简单套接字服务器供您使用。

此外,由于 Python 可移植到 Windows 之外,您真的想将自己限制在命名管道和 COM 上,并将您的 Python 程序永远链接到 Windows 吗?

但是,如果您的脚本是 Delphi 程序的附属程序,那么 Python4Delphi(调用 Python 函数并使用其结果的能力)正是您所需要的,据我所知,它没有很好的文档记录,因为它很容易使用,它不需要。在您第一次阅读之前,您阅读了多少关于 WriteLn 的文档WriteLn('HelloWorld')

于 2011-03-31T20:29:12.737 回答