Strange Python COM behaviour

A

a_bogdan_marinescu

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,

Bogdan Marinescu
 
M

Mark Hammond

a_bogdan_marinescu said:
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.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,768
Messages
2,569,575
Members
45,053
Latest member
billing-software

Latest Threads

Top