我是Python的新手,我希望我的Python脚本能够与我的Windows程序(在Delphi,FWIW中开发)进行通信。
基本上,Python脚本将从其他数据源下载一组数据,并且对于每个下载的记录,我将记录它并告诉Windows程序。对于日志记录,我会尽可能使用Python标准日志库,但是最简单的方法告诉win32程序是什么,以便我可以向最终用户显示下载过程?
注意:我知道Python4Delphi,但它没有很好地记录,我想保持简单。
编辑1:将只有一个Delphi exe和多个python脚本。
感谢。
答案 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的文档?