Communicating with MSVC++ via COM: how?

Eric Brunel eric.brunel at
Mon Jan 12 11:22:39 CET 2004

Mark Hammond wrote:
> Eric Brunel wrote:
>> This script doesn't work: the call to docs.CloseAll fails with the error:
>> Traceback (most recent call last):
>>   File "", line 13, in ?
>>     docs.CloseAll()
>> TypeError: object of type 'int' is not callable
> This is because docs.CloseAll is making the call, and returning an int. 
>  This, docs.CloseAll() is attempting to call that int.

Hi Mark,

Thanks for your answer. We finally figured out this one, but the problem lies a 
bit farther in the script:


The method AddBreakpointAtLine takes an *optional* parameter which is the line 
number on which to put the breakpoint. But bkpts.AddBreakpointAtLine actually 
calls the method AddBreakpointAtLine with no parameter, so I just can't figure 
out how to call the method *with* a parameter...

> It looks very much like you have no makepy support for MSVC built.
> Just after the line:
> app = win32com.client.Dispatch('MSDev.Application')
> Try adding:
> app = win32com.client.gencache.EnsureDispatch(app)
> That should force makepy, and everything should start working.

I tried what you suggest, but it didn't work: I get the following error:

 >>> app = win32com.client.gencache.EnsureDispatch(app)
Traceback (most recent call last):
   File "<stdin>", line 1, in ?
   File "H:\Tools\Python\bin\Windows\Python21\win32com\client\", line 
423, in EnsureDispatch
     disp = win32com.client.Dispatch(prog_id)
   File "H:\Tools\Python\bin\Windows\Python21\win32com\client\", line 
95, in Dispatch
     return __WrapDispatch(dispatch, userName, resultCLSID, typeinfo, 
UnicodeToString, clsctx)
   File "H:\Tools\Python\bin\Windows\Python21\win32com\client\", line 
26, in __WrapDispatch
     typeinfo = dispatch.GetTypeInfo()
   File "H:\Tools\Python\bin\Windows\Python21\win32com\client\", line 
438, in __getattr__
     raise AttributeError, "%s.%s" % (self._username_, attr)
AttributeError: MSDev.Application.GetTypeInfo

Trying to force the generation of the support files via an explicit 
didn't work either: doing a Dispatch('MsDev.Application') still doesn't get the 
right type. Forcing the type by doing Dispatch('MsDev.Application', 
resultCLSID="{the-class-id}") seems to work, but apparently, the generated class 
knows nothing about the types of its members and simple things as:

app.Visible = 1

fail with a traceback (something like "incorrect type for variable" - sorry for 
the imprecision: we have a French Windows, so the message I get is in 
French...). Getting an attribute like app.Debugger seems to work, but printing 
it says:
<COMObject Debugger>
so the object is a dynamic one, and also knows nothing about its type.

Is there any solution to our problems?

- Eric Brunel <eric dot brunel at pragmadev dot com> -
PragmaDev : Real Time Software Development Tools -

More information about the Python-list mailing list