Error connecting to COMServer

Mike Müller mmueller at dgfz.de
Mon Jun 11 07:35:43 CEST 2001


Mark Hammond <MarkH at ActiveState.com> wrote in message news:<3B21C08F.8080905 at ActiveState.com>...
thanks for your answer
> Mike Müller wrote:
> 
> > <VB> 
> > Dim Adder As New AddingMachine  
> > </VB>
> 
> 
> It appears the ProgID of the object is simply "AddingMachine"

The wizard that took me through the creation process says
Adder.AddingMachine is the ProgID
and
AddingMachine is the short name.
> 
> 
> >>>>from win32com.client import Dispatch
> >>>>a = Dispatch("Adder.AddingMachine")
> 
> 
> Try just using "AddingMachine".

This results in:

>>> from win32com.client import Dispatch
>>> Dispatch("AddingMachine")
Traceback (innermost last):
  File "<interactive input>", line 1, in ?
  File "c:\code\python20\win32com\client\__init__.py", line 94, in
Dispatch
    dispatch, userName =
dynamic._GetGoodDispatchAndUserName(dispatch,userName,clsctx)
  File "c:\code\python20\win32com\client\dynamic.py", line 80, in
_GetGoodDispatchAndUserName
    return (_GetGoodDispatch(IDispatch, clsctx), userName)
  File "c:\code\python20\win32com\client\dynamic.py", line 71, in
_GetGoodDispatch
    IDispatch = pythoncom.CoCreateInstance(IDispatch, None, clsctx,
pythoncom.IID_IDispatch)
com_error: (-2147221005, 'Ung\374ltige Klassenzeichenfolge', None,
None)

According to MSDN ... passing an invalid object name  ...
> 
> > Can I conclude anything if I look into at the file generated by COM
> > Makepy?
> 
> 
> Why not open it and see :)  You should find some generated comments 
> telling you the correct Prog ID to use for all the objects in the library.

from the generated file:
# This CoClass is known by the name 'Adder.AddingMachine.1.0'

But this gives the same result as without the 1.0

# The following 3 lines may need tweaking for the particular server
# Candidates are pythoncom.Missing and pythoncom.Empty
defaultNamedOptArg=pythoncom.Empty
defaultNamedNotOptArg=pythoncom.Empty
defaultUnnamedArg=pythoncom.Empty

Empty and Missing give the same error messages (Adder.AddingMachine or
just AddingMachine as ProgID).

Since the file is not long I just appended it (see below).

Mike



# Created by makepy.py version 0.3.6
# By python version 2.0 (#8, Oct 19 2000, 11:30:05) [MSC 32 bit
(Intel)]
# From type library '1'
# On Fri Jun 08 23:15:41 2001
"""AddingMachine 1.0 Type Library"""
makepy_version = '0.3.6'
python_version = 0x20000f1

import win32com.client.CLSIDToClass, pythoncom

# The following 3 lines may need tweaking for the particular server
# Candidates are pythoncom.Missing and pythoncom.Empty
defaultNamedOptArg=pythoncom.Missing
defaultNamedNotOptArg=pythoncom.Missing
defaultUnnamedArg=pythoncom.Missing

CLSID = pythoncom.MakeIID('{904245FB-DD6D-11D3-9835-0000F875E193}')
MajorVersion = 1
MinorVersion = 0
LibraryFlags = 8
LCID = 0x0

class CoClassBaseClass:
	def __init__(self, oobj=None):
		if oobj is None: oobj = pythoncom.new(self.CLSID)
		self.__dict__["_dispobj_"] = self.default_interface(oobj)
	def __repr__(self):
		return "<win32com.gen_py.%s.%s>" % (__doc__,
self.__class__.__name__)

	def __getattr__(self, attr):
		d=self.__dict__["_dispobj_"]
		if d is not None: return getattr(d, attr)
		raise AttributeError, attr
	def __setattr__(self, attr, value):
		if self.__dict__.has_key(attr): self.__dict__[attr] = value; return
		try:
			d=self.__dict__["_dispobj_"]
			if d is not None:
				d.__setattr__(attr, value)
				return
		except AttributeError:
			pass
		self.__dict__[attr] = value

# This CoClass is known by the name 'Adder.AddingMachine.1.0'
class AddingMachine(CoClassBaseClass): # A CoClass
	CLSID = pythoncom.MakeIID("{904245FC-DD6D-11D3-9835-0000F875E193}")
	coclass_sources = [
	]
	coclass_interfaces = [
	]

RecordMap = {
}

CLSIDToClassMap = {
	'{904245FC-DD6D-11D3-9835-0000F875E193}' : AddingMachine,
}
CLSIDToPackageMap = {}

win32com.client.CLSIDToClass.RegisterCLSIDsFromDict( CLSIDToClassMap )



More information about the Python-list mailing list