有没有相当于WScript.ConnectObject在python中?

2024-09-22 16:34:39 发布

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

我正在重新实现一个与COM对象交互的简单WSH脚本(“运河分析仪.应用在python中使用win32com。当脚本调用^{}方法将其处理程序绑定到COM对象事件时,我被阻止了:

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的时刻,在处理程序之外调用它要么没有预期的效果,要么引发异常:

^{pr2}$

在python中有没有一个等价的ConnectObject来绑定OnInit()事件?在


Tags: 对象脚本comapp处理程序事件分析仪measurement
1条回答
网友
1楼 · 发布于 2024-09-22 16:34:39

感谢@JacobSeleznev,我发现了DispatchWithEvents()方法:

class ApplicationEvents(object):
    def OnQuit(self):
        print("quitting")

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

还有一个WithEvents()方法,它在调用Dispatch()之后有条件地启用事件处理时非常有用:

^{pr2}$

最后一点:为了让事件真正被调度,需要连续调用pythoncom.PumpWaitingMessages(),直到所有事件都被处理完毕。在

相关问题 更多 >