Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中是否有WScript.ConnectObject的等价物?_Python_Python 3.x_Com_Win32com_Wsh - Fatal编程技术网

python中是否有WScript.ConnectObject的等价物?

python中是否有WScript.ConnectObject的等价物?,python,python-3.x,com,win32com,wsh,Python,Python 3.x,Com,Win32com,Wsh,我正在使用win32com在python中重新实现一个与COM对象交互的简单脚本(“CANalyzer.Application”,如果您必须知道的话)。我在脚本调用方法将其处理程序绑定到COM对象事件时被阻止: Set App = CreateObject("CANalyzer.Application") Set Measurement = App.Measurement Wscript.ConnectObject Measurement, "Measurement_" Sub Measure

我正在使用
win32com
在python中重新实现一个与COM对象交互的简单脚本(“CANalyzer.Application”,如果您必须知道的话)。我在脚本调用方法将其处理程序绑定到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
的时刻,在处理程序外部调用它要么没有预期效果,要么引发异常:

pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, None, None, None, 0, -2147418113), None)

在python中是否有一个等价的
ConnectObject
可以用来绑定到
OnInit()
事件?

多亏了@JacobSeleznev,我发现了
DispatchWithEvents()
方法:

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

app = win32com.client.DispatchWithEvents("CANalyzer.Application", ApplicationEvents)
还有一个
WithEvents()
方法,在调用
Dispatch()
后有条件地启用事件处理时非常有用:

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

最后一点注意:为了实际调度事件,需要连续调用
pythoncom.PumpWaitingMessages()
,直到处理完所有事件。

查看win32com.client。DispatchWithEvents@JacobSeleznev谢谢,这真的很有帮助。我希望我能找到一些关于
win32com
的在线文档,避免问一些基本问题,但通过谷歌搜索
DispatchWithEvents win32com python
只会得到SO和邮件列表的链接。