首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python中有类似于WScript.ConnectObject的东西吗?

在python中有类似于WScript.ConnectObject的东西吗?
EN

Stack Overflow用户
提问于 2016-02-15 14:35:52
回答 1查看 852关注 0票数 0

我正在使用WSH重新实现与COM对象交互的简单win32com脚本(如果您必须知道的话是“CANalyzer.Application”)。当脚本调用ConnectObject方法将其处理程序绑定到COM对象事件时,我遇到了阻塞:

代码语言:javascript
复制
Set App = CreateObject("CANalyzer.Application")
Set Measurement = App.Measurement
Wscript.ConnectObject Measurement, "Measurement_"

Sub Measurement_OnInit()
  Set TestFunction = App.CAPL.GetFunction("f")
End Sub

这个处理程序似乎是我可以合法调用GetFunction的唯一时刻,在处理程序之外调用它不是没有所期望的效果,就是抛出异常:

代码语言:javascript
复制
pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, None, None, None, 0, -2147418113), None)

在python中是否有类似的ConnectObject可以用来绑定到OnInit()事件?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-16 07:15:46

由于@JacobSeleznev,我发现了DispatchWithEvents()方法:

代码语言:javascript
复制
class ApplicationEvents(object):
    def OnQuit(self):
        print("quitting")

app = win32com.client.DispatchWithEvents("CANalyzer.Application", ApplicationEvents)

还有一个WithEvents()方法,当事件处理应该在Dispatch()已经被调用之后有条件地启用时,这个方法非常有用:

代码语言:javascript
复制
app = win32com.client.Dispatch("CANalyzer.Application")
win32com.client.WithEvents(app, ApplicationEvents)

最后注意:为了实际分派事件,需要连续调用pythoncom.PumpWaitingMessages(),直到所有事件都被处理为止。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35412081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档