[python-win32] com events while running wx main loop

Thomas Heller theller at ctypes.org
Fri Apr 20 20:26:00 CEST 2007


Christian K. schrieb:
>> Second, if you are running the exact sample that I posted then it should work
>> for InternetExplorer, and with slight changes also for Outlook.  At least
>> it worked for me.
> 
> Well, here it doesn't.

comtypes uses fairly extensive logging calls in certain areas.  You can enable this
to find out the reason.  Here is a little code snippet that shows what happens on
my system when I call GetEvents() with Internet Explorer:

<code>
from comtypes.client import CreateObject, GetEvents
import logging
ie = CreateObject("InternetExplorer.Application")
logging.basicConfig(level=logging.DEBUG)
GetEvents(ie, sink=object())
<code/>

and here is the output:

DEBUG:comtypes.client._events:<POINTER(IWebBrowser2) object e27d00> using sinkinterface from clsid <class 'comtypes.gen.
_EAB22AC0_30C1_11CF_A7EB_0000C05BAE0B_0_1_1.DWebBrowserEvents2'>
DEBUG:comtypes.client._events:Start advise <class 'comtypes.gen._EAB22AC0_30C1_11CF_A7EB_0000C05BAE0B_0_1_1.DWebBrowserE
vents2'>
DEBUG:comtypes._comobject:<comtypes.client._events._DispEventReceiver object at 0x00DAD910>.QueryInterface({00000003-000
0-0000-C000-000000000046}) -> E_NOINTERFACE
DEBUG:comtypes._comobject:<comtypes.client._events._DispEventReceiver object at 0x00DAD910>.QueryInterface({00000003-000
0-0000-C000-000000000046}) -> E_NOINTERFACE
DEBUG:comtypes._comobject:<comtypes.client._events._DispEventReceiver object at 0x00DAD910>.QueryInterface({0000001B-000
0-0000-C000-000000000046}) -> E_NOINTERFACE
DEBUG:comtypes._comobject:<comtypes.client._events._DispEventReceiver object at 0x00DAD910>.QueryInterface({00000000-000
0-0000-C000-000000000046}) -> S_OK
DEBUG:comtypes._comobject:1 active COM objects: Added   <comtypes.client._events._DispEventReceiver object at 0x00DAD910
>
DEBUG:comtypes._comobject:<comtypes.client._events._DispEventReceiver object at 0x00DAD910>.AddRef() -> 1
DEBUG:comtypes._comobject:<comtypes.client._events._DispEventReceiver object at 0x00DAD910>.AddRef() -> 2
DEBUG:comtypes._comobject:<comtypes.client._events._DispEventReceiver object at 0x00DAD910>.QueryInterface({00000018-000
0-0000-C000-000000000046}) -> E_NOINTERFACE
DEBUG:comtypes._comobject:<comtypes.client._events._DispEventReceiver object at 0x00DAD910>.QueryInterface({00000019-000
0-0000-C000-000000000046}) -> E_NOINTERFACE
DEBUG:comtypes._comobject:<comtypes.client._events._DispEventReceiver object at 0x00DAD910>.QueryInterface({4C1E39E1-E3E
3-4296-AA86-EC938D896E92}) -> E_NOINTERFACE
DEBUG:comtypes._comobject:<comtypes.client._events._DispEventReceiver object at 0x00DAD910>.Release() -> 1
DEBUG:comtypes._comobject:<comtypes.client._events._DispEventReceiver object at 0x00DAD910>.QueryInterface({34A715A0-658
7-11D0-924A-0020AFC7AC4D}) -> S_OK
DEBUG:comtypes._comobject:<comtypes.client._events._DispEventReceiver object at 0x00DAD910>.AddRef() -> 2
DEBUG:comtypes._comobject:<comtypes.client._events._DispEventReceiver object at 0x00DAD910>.AddRef() -> 3
DEBUG:comtypes:Release <POINTER(IConnectionPointContainer) object dab300>
DEBUG:comtypes._comobject:<comtypes.client._events._DispEventReceiver object at 0x00DAD910>.Release() -> 2
DEBUG:comtypes._comobject:<comtypes.client._events._DispEventReceiver object at 0x00DAD910>.Release() -> 1
DEBUG:comtypes._comobject:<comtypes.client._events._DispEventReceiver object at 0x00DAD910>.Release() -> 0
DEBUG:comtypes._comobject:0 active COM objects: Removed <comtypes.client._events._DispEventReceiver object at 0x00DAD910
>
DEBUG:comtypes:Release <POINTER(IConnectionPoint) object dab030>
DEBUG:comtypes:Calling CoUnititialize()
DEBUG:comtypes:CoUnititialize() done.

You should run the snippet yourself and compare the output.

Thomas



More information about the Python-win32 mailing list