Python实例到COM对象

2024-09-29 21:50:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试在Python中使用COM对象,但遇到了一个小问题。在

我使用的COM对象有一个名为SetCallback的方法,它使用一个object,方法如下:

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

取自MS OLE/COM对象查看器

现在,如果我在python中创建COM应用程序并创建实例,那么在我尝试将一个对象的实例传递给这个方法之前,一切都正常。在

^{pr2}$

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

在C中执行相同的操作时,我会将类def设置为如下所示:

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

方法调用与Python版本相同。在

为了使用对象的实例作为COM对象的回调,我必须在Python中执行类似的操作。


Tags: 对象实例方法incomid应用程序object
2条回答

如果对象需要符合COM。 我们从一个活跃的厂商那里知道,他们的软件在某种程度上是处于活跃状态的,但是我们不知道他们的软件是在什么样的情况下使用的。在

两种方式都可以正常工作,有一个调度器可以自动包装COM兼容的对象以供python访问,反之亦然。 如果您没有许可证和/或资金限制,可能值得一看。在

期待答复,如果有人可以破解它没有任何额外的图书馆。在

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

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()

在main()

^{pr2}$

相关问题 更多 >

    热门问题