Python脚本和win32程序之间的通信(在Delphi中开发)

时间:2011-03-31 15:53:35

标签: python windows delphi interprocess

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

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

注意:我知道Python4Delphi,但它没有很好地记录,我想保持简单。

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

感谢。

5 个答案:

答案 0 :(得分:3)

如果你的Delphi程序是执行Python程序的程序,那么你可以简单地使用脚本write progress messages to standard output,你可以read them in your Delphi program。 (如果你这样做,那么一个程序是在Python中而另一个在Delphi中并不重要。这两个程序都可以用你想要的任何语言编写。)

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

我自己的想法:

  

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

答案 3 :(得分:0)

使用PyWin32包:http://pypi.python.org/pypi/pywin32 它使您可以访问整个WinAPI。

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

答案 4 :(得分:0)

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

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

此外,由于Python可以在Windows之外移植,你真的想限制自己使用命名管道和COM并将你的Python程序永久地链接到Windows吗?

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