Strange Python COM behaviour

Mark Hammond mhammond at skippinet.com.au
Sat Nov 15 21:12:34 EST 2003


a_bogdan_marinescu wrote:
>     Hello all,
> 
>     I'm trying to do some COM automation from Python (using Mark 
> Hammond's Win32 extensions, of course) and I'm getting some very 
> strange errors. Specifically, I try to use a COM object that supports 
> events, and I'm instantiating it like this:
> 
>   eventobj = win32com.client.DispatchWithEvents( crtthread, 
> DebuggerThreadEvents )
> 
> When I try to do this, I get the following error:
> 
> ...
>   File "d:\work\scripts\automation\autobuild.py", line 106, in 
> execute_one_file
>     eventobj = win32com.client.DispatchWithEvents( crtthread, 
> DebuggerThreadEvents )
>   File "C:\Python23\lib\site-packages\win32com\client\__init__.py", 
> line 264, in DispatchWithEvents
>     result_class = new.classobj("COMEventClass", (disp_class, 
> events_class, user_event_class), {"__setattr__" : _event_setattr_})
> TypeError: str() takes at most 1 argument (3 given)
> 
>     It seems that events_class's type is str ( as returned by 
> getevents() function in __init__.py file from win32com/Client 
> directory) instead of 'classobj' as it is supposed to be. event_class 
> is actually a simple string showing a CLSID. I'm new to COM and I 
> can't understand why this is happening. Please help me if you can. 
>     Regards,

It looks to me as if this error could occur if the event interface you 
are trying to implement is not based on IDispatch.  It looks like a bug 
in win32com - what is the object you are trying to use?

Mark.





More information about the Python-list mailing list