On 26/08/2009 8:21 AM, Arn Vollebregt wrote:
Hi,
I am trying to hook an advise sink into Outlook to receive new email
notifications, but I cannot find any examples on this. I've scraped together
the code below, but that yields an error. Can anybody point me to a working
sample, or provide a quick sample of how to imlement this? I've been banging
my head on this for some days now, I am not making any progres...
<code>
class Sink():
_com_interfaces_ = [mapi.IID_IMAPIAdviseSink]
_reg_progid_ = 'IMAPIAdviseSinkTest'
_reg_clsid_ = str(mapi.IID_IMAPIAdviseSink)
#_reg_clsid_ = str(pythoncom.CreateGuid())
_public_methods_ = ['OnNotify']
def OnNotify(self, foo, bar):
print "DEBUG: received an OnNotify()"
def main():
sink = pythoncom.CoCreateInstance(Sink._reg_clsid_, None,
pythoncom.CLSCTX_ALL, mapi.IID_IMAPIAdviseSink)
if __name__ == '__main__':
main()
</code>
<error>
sink = pythoncom.CoCreateInstance(Sink._reg_clsid_, None,
pythoncom.CLSCTX_ALL, mapi.IID_IMAPIAdviseSink)
pywintypes.com_error: (-2147221164, 'Class not registered', None, None)
</error>
You don't need to CoCreateInstance, and don't need the _reg_*
attributes. Something like:
from win32com.server.util import wrap
site = wrap(Sink())
should allow you to pass the 'site' object to a function which expects
an IMAPIAdviceSink interface.
Cheers,
Mark
_______________________________________________
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32