带有 Python 的 COM 本地服务器(进程外)

Posted

技术标签:

【中文标题】带有 Python 的 COM 本地服务器(进程外)【英文标题】:COM Local Server (Out of process) w/ Python 【发布时间】:2011-07-29 08:53:33 【问题描述】:

我有一个关于 Python 和 COM 的问题。

我得到了一个程序,它是一个进程外 COM 本地服务器(它是一个 .EXE)。它被设计为单例,因此一台机器上总是只有一个实例运行。它旨在支持多个客户端。我的问题是如何创建一个 Python 客户端来使用它。

总的来说,我在 COM 方面的经验有限,而且我的具体情况似乎很少见。基本上,定义了接口方法,以及如何实现接口在 C++ 上下文中松散地定义。但是,我在 Python 中做同样的事情时遇到了麻烦。

我正在使用 win32com 和 pythoncom,但两者的文档都相当模糊,我无法弄清楚如何实现它。我也尝试过在 PythonWin 中使用 COM Makepy 实用程序,但我不知道如何处理它生成的文件。

如果我的问题太含糊,我深表歉意,因为这是我第一次使用堆栈溢出。大多数其他与 Python 和 COM 相关的问题几乎都涉及到我的主题,但我仍然需要更多指导。

【问题讨论】:

【参考方案1】:

是的,您的问题有点含糊。听起来您的问题只是“与 COM 对话”方面的问题 - 即。不是单例服务器的东西。我设法从 Win23com 文档中解决了这个问题,我认为这是一本书中的一章(我已经把它传下去了——但我认为这是一本 O'Reilly 学习 Python 类型的书)。

无论如何,我确实写过一篇关于使用 win32com 从 Python 调用 MapPoint 的文章,这里:

http://www.mapping-tools.com/howto/programming/using-python-with-mappoint/

有可能从这个开始做一些工作吗? 也许首先尝试使用已知的 COM 接口(其中存在示例)。例如。 Office 产品或 MapPoint 之一(如果有的话)。

【讨论】:

以上是关于带有 Python 的 COM 本地服务器(进程外)的主要内容,如果未能解决你的问题,请参考以下文章

进程外 COM 服务器卡住

在加载进程内服务器对象实例时防止进程外服务器关闭

进程外 COM 服务器 - 无法创建文件

64 位托管进程:进程外 32 位 COM 服务器非默认接口不可用

如何加载 COM dll 模块并将其接口公开为进程外服务器

COM“进程外”服务器的 C++/CLI 等效项