python - 使用 TLB 定义的接口(interface)与 Python 和 COM

标签 python com

我会尽量保持这个问题的紧凑性,但如果看起来我在说一些疯狂的话,那几乎可以肯定是因为我对某些关键点一无所知,所以请纠正我。


我正在 Windows 环境中编写一个程序,它将与具有 COM 接口(interface)的现有应用程序交互,以允许第 3 方软件与其交互。

我已经阅读了该应用程序的所有文档,它说有一个 TLB 文件定义了通过 COM 可用的函数和数据。

我如何在 python 中使用 TLB 文件?我如何发现应用程序的 progID 以便我可以与其交互(文档中未给出)。

我很迷茫。我有相当多的 Python 经验,但我对在 Windows 环境中进行开发完全陌生。任何帮助都会非常有帮助。我一直在阅读 win32com 上的所有文档,但我仍然不知道该怎么做,因为据我所知,没有人解决引入 TLB 文件的问题。

最佳答案

问题是将自定义 TLB 文件与要在 python 中开发的 COM 客户端链接。我为用 C# 开发的 COM 服务器做了一个小示例代码,python 客户端使用“comtypes”包访问相同的示例代码。 下面的代码片段给出了:

    import comtypes.client as CC
    import comtypes

    ccHandle = CC.CreateObject("CSharpServer.InterfaceImplementation")
    print (ccHandle)
    import comtypes.gen.CSharpServer as CS
    InterfaceHandle = ccHandle.QueryInterface(CS.IManagedInterface)

    print ("output of PrintHi function = ", InterfaceHandle.PrintHi("World"))

以上 python 脚本适用于 http://msdn.microsoft.com/en-us/library/aa645738(v=vs.71).aspx 处的 C# COM 服务器代码(引用文件1:CSharpServer.cs)。

关于python - 使用 TLB 定义的接口(interface)与 Python 和 COM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10179309/

相关文章:

python - 计算适用于 numpy 数组,但不适用于 numpy 矩阵

.net - .NET 4.0 迁移后引用 .NET 1.0 程序集的 System.TypeLoadException

c - 让IE浏览器打开文件

c++ - 将 IDispatch* 转换为字符串?

.net - 有时是否必须使用 COM 对象显式调用 gc.collect

python - 将 Oauth token 安全地存储在文件中

python - 根据第一列然后下一列排序

Python,过滤对象列表,但返回特定属性?

python - 将 Keras 转换为 TensorFlow——剪枝+概率

c++ - 如何访问 UPnP 设备的服务?