gpt4 book ai didi

Python 实例到 COM 对象

转载 作者:太空宇宙 更新时间:2023-11-04 06:28:36 27 4
gpt4 key购买 nike

我在尝试将 COM 对象与 Python 结合使用时遇到了一个小问题。

我正在使用的 COM 对象有一个名为 SetCallback 的方法,它接受一个 object,该方法如下所示:

    [id(0x60010010)]
void SetCallback([in] IDispatch* callbackobject);

取自 MS OLE/COM 对象查看器

现在,如果我在 python 中创建我的 COM 应用程序的实例,一切都很好,直到我尝试将一个对象的实例传递给此方法。

callback = Callback()
mycomobject.SetCallback(callback)

class Callback():
def SetStatusText(self,status):
print status

我在 python 窗口中得到的错误是:TypeError: The Python instance can not be converted to a COM object

在 C# 中做同样的事情时,我曾经让我的类定义看起来像这样:

[ComVisible(True)]
public class Callback
{
//some methods here
}

方法调用与Python版本相同。

为了使用对象的实例作为 COM 对象的回调,我必须在 Python 中做这样的事情吗?

最佳答案

解决了!只需要制作我自己的 COM 服务器并注册它,然后通过 Dispatch 创建对象:

class Callback():
_public_methods_ = ['SetStatusText']
_reg_progid_ = "mycomobject.PythonCallback"
_reg_clsid_ = "{14EF8D30-8B00-4B14-8891-36B8EF6D51FD}"
def SetStatusText(self,status):
print status

if __name__ == "__main__":
print "Registering COM server..."
import win32com.server.register
win32com.server.register.UseCommandLine(Callback)
main()

在主函数中

callback = Dispatch("mycomobject.PythonCallback")
#callback.SetStatusText("Hello World")
mycomobject.SetCallback(callback)

关于Python 实例到 COM 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5453998/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com