You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ORPA-pyOpenRPA/WPy32-3720/python-3.7.2/Lib/site-packages/win32com/client/connect.py

44 lines
1.3 KiB

"""Utilities for working with Connections"""
import win32com.server.util, pythoncom
class SimpleConnection:
"A simple, single connection object"
def __init__(self, coInstance = None, eventInstance = None, eventCLSID = None, debug = 0):
self.cp = None
self.cookie = None
self.debug = debug
if not coInstance is None:
self.Connect(coInstance , eventInstance, eventCLSID)
def __del__(self):
try:
self.Disconnect()
except pythoncom.error:
# Ignore disconnection as we are torn down.
pass
def _wrap(self, obj):
useDispatcher = None
if self.debug:
from win32com.server import dispatcher
useDispatcher = dispatcher.DefaultDebugDispatcher
return win32com.server.util.wrap(obj, useDispatcher=useDispatcher)
def Connect(self, coInstance, eventInstance, eventCLSID = None):
try:
oleobj = coInstance._oleobj_
except AttributeError:
oleobj = coInstance
cpc=oleobj.QueryInterface(pythoncom.IID_IConnectionPointContainer)
if eventCLSID is None: eventCLSID = eventInstance.CLSID
comEventInstance = self._wrap(eventInstance)
self.cp=cpc.FindConnectionPoint(eventCLSID)
self.cookie = self.cp.Advise(comEventInstance)
def Disconnect(self):
if not self.cp is None:
if self.cookie:
self.cp.Unadvise(self.cookie)
self.cookie = None
self.cp = None