By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
446,187 Members | 1,038 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 446,187 IT Pros & Developers. It's quick & easy.

Strange Python COM behaviour

P: n/a
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
Jul 18 '05 #1
Share this Question
Share on Google+
1 Reply


P: n/a
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.

Jul 18 '05 #2

This discussion thread is closed

Replies have been disabled for this discussion.