[python-win32] Newbee problem on dispatch interface
Johannes Brunen
jbrunen at datasolid.de
Mon Jun 20 16:30:55 CEST 2005
Hi,
I have a problem connecting to a COM server with a small test script using python 2.3.5 as well as 2.4.1:
import win32com.client
from win32com.client import gencache
def main():
g1 = gencache.EnsureModule('{9C3BB401-114D-11D4-AC72-00105A4925FC}', 0, 1, 3)
theCADdy = win32com.client.Dispatch('CADdy.CADdy')
print repr(theCADdy) # => <COMObject CADdy.CADdy>
theCADdy = g1.ICADdy(theCADdy) # => <win32com.gen_py.CADdyCOM 1.3 (CADdy) Type Library.ICADdy instance at 0x21362568>
print repr(theCADdy)
v1 = theCADdy.VersionNo
if __name__ == '__main__':
main()
I got the following error message:
C:\Programme\Python\lib\site-packages\win32com\client\__init__.py in __getattr__(self, attr)
453 if args is None:
454 raise AttributeError, "'%s' object has no attribute '%s'" % (repr(self), attr)
--> 455 return self._ApplyTypes_(*args)
456
457 def __setattr__(self, attr, value):
C:\Programme\Python\lib\site-packages\win32com\client\__init__.py in _ApplyTypes_(self, dispid, wFlags, retType, argTypes, user, resultCLSID, *args)
444 def _ApplyTypes_(self, dispid, wFlags, retType, argTypes, user,
445 resultCLSID, *args):
--> 446 return self._get_good_object_(
447 self._oleobj_.InvokeTypes(
448 dispid, 0, wFlags, retType, argTypes, *arg
s),
com_error: (-2147319779, 'Bibliothek nicht registriert.', None, None)
WARNING: Failure executing file: <Test3.py>
I have no idea what is going wrong with my test program. Connecting to MS Excel is no problem. Can someone tell me how do I correctly use the pythonCOM
module. I have no problem connecting the CADdy COM server from VB and C++. Is there anything wrong inside my COM type libraries?
With best regards
Johannes
The following is the information about the type library provided by the OLE viewer:
// Generated .IDL file (by the OLE/COM Object Viewer)
//
// typelib filename: CADdy.tlb
[
uuid(9C3BB401-114D-11D4-AC72-00105A4925FC),
version(1.3),
helpstring("CADdyCOM 1.3 (CADdy) Type Library")
]
library CADDYLib
{
// TLib : // TLib : OLE Automation : {00020430-0000-0000-C000-000000000046}
importlib("stdole2.tlb");
// Forward declare all types defined in this typelib
interface ICADdyAddIn;
interface ICADdy;
interface IEnumCADdyAddIn;
interface ICADdyAddIns;
interface ISupportErrorInfo;
typedef enum {
ADDIN_E_ERRONEOUSADDIN = -2147220992,
ADDIN_E_ALREADYSTARTED = -2147220991,
ADDIN_E_INAPPROPRIATESERVER = -2147220990,
ADDIN_E_CANTCREATESERVER = -2147220989
} ADDINHRESULTS;
[
odl,
uuid(14F65AE1-4671-11D4-8B1A-00105A49278B),
helpstring("ICADdyAddIn Interface"),
dual,
oleautomation
]
interface ICADdyAddIn : IDispatch {
[id(0x00000001), helpstring("method Init")]
HRESULT Init([in] ICADdy* theCADdy);
[id(0x00000002), helpstring("method Exit")]
HRESULT Exit();
[id(0x00000003), propget, helpstring("property CLSID")]
HRESULT CLSID([out, retval] BSTR* pcCLSID);
[id(0x00000004), propget, helpstring("property ProgID")]
HRESULT ProgId([out, retval] BSTR* pcProgId);
[id(0x00000005), propget, helpstring("property Description")]
HRESULT Description([out, retval] BSTR* pcDescription);
};
[
odl,
uuid(D330F3E0-0F91-11D4-AC6E-00105A4925FC),
helpstring("ICADdy Interface"),
dual,
oleautomation
]
interface ICADdy : IDispatch {
[id(0x00000001), propget, helpstring("property FrameManager")]
HRESULT FrameManager([out, retval] IDispatch** ppICADdyFrameManager);
[id(0x00000002), propget, helpstring("property ModelManager")]
HRESULT ModelManager([out, retval] IDispatch** ppICADdyModelManager);
[id(0x00000003), propget, helpstring("property UIManager")]
HRESULT UIManager([out, retval] IDispatch** ppICADdyUIManager);
[id(0x00000004), propget, helpstring("property Manager")]
HRESULT Manager(
[in] BSTR __MIDL_0025,
[out, retval] IDispatch** ppICADdyDimensionManager);
[id(0x00000005), propget, helpstring("property ExeDirectory")]
HRESULT ExeDirectory([out, retval] BSTR* pbstrDirectory);
[id(0x00000006), propget, helpstring("property HomeDirectory")]
HRESULT HomeDirectory([out, retval] BSTR* pbstrDirectory);
[id(0x00000007), propget, helpstring("property Name")]
HRESULT Name([out, retval] BSTR* pbstrName);
[id(0x00000008), propget, helpstring("property VersionNo")]
HRESULT VersionNo([out, retval] long* lVersion);
[id(0x00000009), propget, helpstring("property ReleaseNo")]
HRESULT ReleaseNo([out, retval] long* lRelease);
};
[
odl,
uuid(14F65AE3-4671-11D4-8B1A-00105A49278B),
helpstring("IEnumCADdyAddIn Interface"),
oleautomation
]
interface IEnumCADdyAddIn : IUnknown {
[helpstring("Next")]
HRESULT _stdcall Next(
[in] unsigned long i4Count,
[out] ICADdyAddIn** __MIDL_0015,
[out] unsigned long* pi4Fetched);
[helpstring("Skip")]
HRESULT _stdcall Skip([in] unsigned long __MIDL_0016);
[helpstring("Reset")]
HRESULT _stdcall Reset();
[helpstring("Clone")]
HRESULT _stdcall Clone([out] IEnumCADdyAddIn** __MIDL_0017);
};
[
odl,
uuid(14F65AE2-4671-11D4-8B1A-00105A49278B),
helpstring("ICADdyAddIns Interface"),
dual,
nonextensible,
oleautomation
]
interface ICADdyAddIns : IDispatch {
[id(00000000), propget, helpstring("Item")]
HRESULT Item(
[in] long __MIDL_0018,
[out, retval] ICADdyAddIn** __MIDL_0019);
[id(0xfffffffc), propget, restricted, helpstring("_NewEnum")]
HRESULT _NewEnum([out, retval] IUnknown** __MIDL_0020);
[id(0x00000001), propget, helpstring("property Count")]
HRESULT Count([out, retval] long* __MIDL_0021);
[id(0x00000002), helpstring("Start")]
HRESULT Start(
[in] BSTR __MIDL_0022,
[out, retval] ICADdyAddIn** __MIDL_0023);
[id(0x00000003), helpstring("Stop")]
HRESULT Stop([in] ICADdyAddIn* __MIDL_0024);
[id(0x00000004), helpstring("StopAll")]
HRESULT StopAll();
};
[
uuid(D330F3E1-0F91-11D4-AC6E-00105A4925FC),
helpstring("CADdy Class"),
noncreatable
]
coclass CoCADdy {
[default] interface ICADdy;
interface ISupportErrorInfo;
};
[
odl,
uuid(DF0B3D60-548F-101B-8E65-08002B2BD119)
]
interface ISupportErrorInfo : IUnknown {
HRESULT _stdcall InterfaceSupportsErrorInfo([in] GUID* riid);
};
[
uuid(3F5B2591-4768-11D4-8B1C-00105A49278B),
helpstring("CADdyAddIn Collection")
]
coclass CADdyAddIns {
[default] interface ICADdyAddIns;
interface ISupportErrorInfo;
};
};
And the python file generated by g1 = gencache.EnsureModule('{9C3BB401-114D-11D4-AC72-00105A4925FC}', 0, 1, 3)
# -*- coding: mbcs -*-
# Created by makepy.py version 0.4.91
# By python version 2.3.5 (#62, Mar 22 2005, 21:53:13) [MSC v.1200 32 bit (Intel)]
# From type library '{9C3BB401-114D-11D4-AC72-00105A4925FC}'
# On Mon Jun 20 16:06:02 2005
"""CADdyCOM 1.3 (CADdy) Type Library"""
makepy_version = '0.4.91'
python_version = 0x20305f0
import win32com.client.CLSIDToClass, pythoncom
import win32com.client.util
from pywintypes import IID
from win32com.client import Dispatch
# 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
CLSID = IID('{9C3BB401-114D-11D4-AC72-00105A4925FC}')
MajorVersion = 1
MinorVersion = 3
LibraryFlags = 8
LCID = 0x0
class constants:
ADDIN_E_ALREADYSTARTED =-2147220991 # from enum ADDINHRESULTS
ADDIN_E_CANTCREATESERVER =-2147220989 # from enum ADDINHRESULTS
ADDIN_E_ERRONEOUSADDIN =-2147220992 # from enum ADDINHRESULTS
ADDIN_E_INAPPROPRIATESERVER =-2147220990 # from enum ADDINHRESULTS
from win32com.client import DispatchBaseClass
class ICADdy(DispatchBaseClass):
"""ICADdy Interface"""
CLSID = IID('{D330F3E0-0F91-11D4-AC6E-00105A4925FC}')
coclass_clsid = IID('{D330F3E1-0F91-11D4-AC6E-00105A4925FC}')
# The method Manager is actually a property, but must be used as a method to correctly pass the arguments
def Manager(self, _MIDL_0025_=defaultNamedNotOptArg):
"""property Manager"""
ret = self._oleobj_.InvokeTypes(4, LCID, 2, (9, 0), ((8, 1),),_MIDL_0025_)
if ret is not None:
ret = Dispatch(ret, 'Manager', None, UnicodeToString=0)
return ret
_prop_map_get_ = {
"ExeDirectory": (5, 2, (8, 0), (), "ExeDirectory", None),
"FrameManager": (1, 2, (9, 0), (), "FrameManager", None),
"HomeDirectory": (6, 2, (8, 0), (), "HomeDirectory", None),
"ModelManager": (2, 2, (9, 0), (), "ModelManager", None),
"Name": (7, 2, (8, 0), (), "Name", None),
"ReleaseNo": (9, 2, (3, 0), (), "ReleaseNo", None),
"UIManager": (3, 2, (9, 0), (), "UIManager", None),
"VersionNo": (8, 2, (3, 0), (), "VersionNo", None),
}
_prop_map_put_ = {
}
class ICADdyAddIn(DispatchBaseClass):
"""ICADdyAddIn Interface"""
CLSID = IID('{14F65AE1-4671-11D4-8B1A-00105A49278B}')
coclass_clsid = None
def Exit(self):
"""method Exit"""
return self._oleobj_.InvokeTypes(2, LCID, 1, (24, 0), (),)
def Init(self, theCADdy=defaultNamedNotOptArg):
"""method Init"""
return self._oleobj_.InvokeTypes(1, LCID, 1, (24, 0), ((9, 1),),theCADdy)
_prop_map_get_ = {
"CLSID": (3, 2, (8, 0), (), "CLSID", None),
"Description": (5, 2, (8, 0), (), "Description", None),
"ProgId": (4, 2, (8, 0), (), "ProgId", None),
}
_prop_map_put_ = {
}
class ICADdyAddIns(DispatchBaseClass):
"""ICADdyAddIns Interface"""
CLSID = IID('{14F65AE2-4671-11D4-8B1A-00105A49278B}')
coclass_clsid = IID('{3F5B2591-4768-11D4-8B1C-00105A49278B}')
# Result is of type ICADdyAddIn
# The method Item is actually a property, but must be used as a method to correctly pass the arguments
def Item(self, _MIDL_0018_=defaultNamedNotOptArg):
"""Item"""
ret = self._oleobj_.InvokeTypes(0, LCID, 2, (9, 0), ((3, 1),),_MIDL_0018_)
if ret is not None:
ret = Dispatch(ret, 'Item', '{14F65AE1-4671-11D4-8B1A-00105A49278B}', UnicodeToString=0)
return ret
# Result is of type ICADdyAddIn
def Start(self, _MIDL_0022_=defaultNamedNotOptArg):
"""Start"""
ret = self._oleobj_.InvokeTypes(2, LCID, 1, (9, 0), ((8, 1),),_MIDL_0022_)
if ret is not None:
ret = Dispatch(ret, 'Start', '{14F65AE1-4671-11D4-8B1A-00105A49278B}', UnicodeToString=0)
return ret
def Stop(self, _MIDL_0024_=defaultNamedNotOptArg):
"""Stop"""
return self._oleobj_.InvokeTypes(3, LCID, 1, (24, 0), ((9, 1),),_MIDL_0024_)
def StopAll(self):
"""StopAll"""
return self._oleobj_.InvokeTypes(4, LCID, 1, (24, 0), (),)
_prop_map_get_ = {
"Count": (1, 2, (3, 0), (), "Count", None),
}
_prop_map_put_ = {
}
# Default method for this class is 'Item'
def __call__(self, _MIDL_0018_=defaultNamedNotOptArg):
"""Item"""
ret = self._oleobj_.InvokeTypes(0, LCID, 2, (9, 0), ((3, 1),),_MIDL_0018_)
if ret is not None:
ret = Dispatch(ret, '__call__', '{14F65AE1-4671-11D4-8B1A-00105A49278B}', UnicodeToString=0)
return ret
# str(ob) and int(ob) will use __call__
def __unicode__(self, *args):
try:
return unicode(self.__call__(*args))
except pythoncom.com_error:
return repr(self)
def __str__(self, *args):
return str(self.__unicode__(*args))
def __int__(self, *args):
return int(self.__call__(*args))
def __iter__(self):
"Return a Python iterator for this object"
ob = self._oleobj_.InvokeTypes(-4,LCID,2,(13, 10),())
return win32com.client.util.Iterator(ob)
def _NewEnum(self):
"Create an enumerator from this object"
return win32com.client.util.WrapEnum(self._oleobj_.InvokeTypes(-4,LCID,2,(13, 10),()),'{14F65AE1-4671-11D4-8B1A-00105A49278B}')
def __getitem__(self, index):
"Allow this class to be accessed as a collection"
if not self.__dict__.has_key('_enum_'):
self.__dict__['_enum_'] = self._NewEnum()
return self._enum_.__getitem__(index)
#This class has Count() property - allow len(ob) to provide this
def __len__(self):
return self._ApplyTypes_(*(1, 2, (3, 0), (), "Count", None))
#This class has a __len__ - this is needed so 'if object:' always returns TRUE.
def __nonzero__(self):
return True
from win32com.client import CoClassBaseClass
# This CoClass is known by the name 'AddIns.CADdyAddIns.1'
class CADdyAddIns(CoClassBaseClass): # A CoClass
# CADdyAddIn Collection
CLSID = IID('{3F5B2591-4768-11D4-8B1C-00105A49278B}')
coclass_sources = [
]
coclass_interfaces = [
ICADdyAddIns,
]
default_interface = ICADdyAddIns
# This CoClass is known by the name 'CADdy.CADdy.1'
class CoCADdy(CoClassBaseClass): # A CoClass
# CADdy Class
CLSID = IID('{D330F3E1-0F91-11D4-AC6E-00105A4925FC}')
coclass_sources = [
]
coclass_interfaces = [
ICADdy,
]
default_interface = ICADdy
ICADdy_vtables_dispatch_ = 1
ICADdy_vtables_ = [
(('FrameManager', 'ppICADdyFrameManager'), 1, (1, (), [(16393, 10, None, None)], 1, 2, 4, 0, 28, (3, 0, None, None), 0)),
(('ModelManager', 'ppICADdyModelManager'), 2, (2, (), [(16393, 10, None, None)], 1, 2, 4, 0, 32, (3, 0, None, None), 0)),
(('UIManager', 'ppICADdyUIManager'), 3, (3, (), [(16393, 10, None, None)], 1, 2, 4, 0, 36, (3, 0, None, None), 0)),
(('Manager', '__MIDL_0025', 'ppICADdyDimensionManager'), 4, (4, (), [(8, 1, None, None), (16393, 10, None, None)], 1, 2, 4, 0, 40, (3, 0, None, None), 0)),
(('ExeDirectory', 'pbstrDirectory'), 5, (5, (), [(16392, 10, None, None)], 1, 2, 4, 0, 44, (3, 0, None, None), 0)),
(('HomeDirectory', 'pbstrDirectory'), 6, (6, (), [(16392, 10, None, None)], 1, 2, 4, 0, 48, (3, 0, None, None), 0)),
(('Name', 'pbstrName'), 7, (7, (), [(16392, 10, None, None)], 1, 2, 4, 0, 52, (3, 0, None, None), 0)),
(('VersionNo', 'lVersion'), 8, (8, (), [(16387, 10, None, None)], 1, 2, 4, 0, 56, (3, 0, None, None), 0)),
(('ReleaseNo', 'lRelease'), 9, (9, (), [(16387, 10, None, None)], 1, 2, 4, 0, 60, (3, 0, None, None), 0)),
]
ICADdyAddIn_vtables_dispatch_ = 1
ICADdyAddIn_vtables_ = [
(('Init', 'theCADdy'), 1, (1, (), [(9, 1, None, "IID('{D330F3E0-0F91-11D4-AC6E-00105A4925FC}')")], 1, 1, 4, 0, 28, (3, 0, None, None), 0)),
(('Exit',), 2, (2, (), [], 1, 1, 4, 0, 32, (3, 0, None, None), 0)),
(('CLSID', 'pcCLSID'), 3, (3, (), [(16392, 10, None, None)], 1, 2, 4, 0, 36, (3, 0, None, None), 0)),
(('ProgId', 'pcProgId'), 4, (4, (), [(16392, 10, None, None)], 1, 2, 4, 0, 40, (3, 0, None, None), 0)),
(('Description', 'pcDescription'), 5, (5, (), [(16392, 10, None, None)], 1, 2, 4, 0, 44, (3, 0, None, None), 0)),
]
ICADdyAddIns_vtables_dispatch_ = 1
ICADdyAddIns_vtables_ = [
(('Item', '__MIDL_0018', '__MIDL_0019'), 0, (0, (), [(3, 1, None, None), (16393, 10, None, "IID('{14F65AE1-4671-11D4-8B1A-00105A49278B}')")], 1, 2, 4, 0, 28, (3, 0, None, None), 0)),
(('_NewEnum', '__MIDL_0020'), -4, (-4, (), [(16397, 10, None, None)], 1, 2, 4, 0, 32, (3, 0, None, None), 1)),
(('Count', '__MIDL_0021'), 1, (1, (), [(16387, 10, None, None)], 1, 2, 4, 0, 36, (3, 0, None, None), 0)),
(('Start', '__MIDL_0022', '__MIDL_0023'), 2, (2, (), [(8, 1, None, None), (16393, 10, None, "IID('{14F65AE1-4671-11D4-8B1A-00105A49278B}')")], 1, 1, 4, 0, 40, (3, 0, None, None), 0)),
(('Stop', '__MIDL_0024'), 3, (3, (), [(9, 1, None, "IID('{14F65AE1-4671-11D4-8B1A-00105A49278B}')")], 1, 1, 4, 0, 44, (3, 0, None, None), 0)),
(('StopAll',), 4, (4, (), [], 1, 1, 4, 0, 48, (3, 0, None, None), 0)),
]
IEnumCADdyAddIn_vtables_dispatch_ = 0
IEnumCADdyAddIn_vtables_ = [
(('Next', 'i4Count', '__MIDL_0015', 'pi4Fetched'), 1, (1, (), [(19, 1, None, None), (16393, 2, None, "IID('{14F65AE1-4671-11D4-8B1A-00105A49278B}')"), (16403, 2, None, None)], 1, 1, 4, 0, 12, (3, 0, None, None), 0)),
(('Skip', '__MIDL_0016'), 2, (2, (), [(19, 1, None, None)], 1, 1, 4, 0, 16, (3, 0, None, None), 0)),
(('Reset',), 3, (3, (), [], 1, 1, 4, 0, 20, (3, 0, None, None), 0)),
(('Clone', '__MIDL_0017'), 4, (4, (), [(16397, 2, None, "IID('{14F65AE3-4671-11D4-8B1A-00105A49278B}')")], 1, 1, 4, 0, 24, (3, 0, None, None), 0)),
]
ISupportErrorInfo_vtables_dispatch_ = 0
ISupportErrorInfo_vtables_ = [
(('InterfaceSupportsErrorInfo', 'riid'), 1610678272, (1610678272, (), [(36, 1, None, None)], 1, 1, 4, 0, 12, (3, 0, None, None), 0)),
]
RecordMap = {
}
CLSIDToClassMap = {
'{14F65AE1-4671-11D4-8B1A-00105A49278B}' : ICADdyAddIn,
'{D330F3E1-0F91-11D4-AC6E-00105A4925FC}' : CoCADdy,
'{D330F3E0-0F91-11D4-AC6E-00105A4925FC}' : ICADdy,
'{14F65AE2-4671-11D4-8B1A-00105A49278B}' : ICADdyAddIns,
'{3F5B2591-4768-11D4-8B1C-00105A49278B}' : CADdyAddIns,
}
CLSIDToPackageMap = {}
win32com.client.CLSIDToClass.RegisterCLSIDsFromDict( CLSIDToClassMap )
VTablesToPackageMap = {}
VTablesToClassMap = {
'{14F65AE2-4671-11D4-8B1A-00105A49278B}' : 'ICADdyAddIns',
'{14F65AE3-4671-11D4-8B1A-00105A49278B}' : 'IEnumCADdyAddIn',
'{D330F3E0-0F91-11D4-AC6E-00105A4925FC}' : 'ICADdy',
'{DF0B3D60-548F-101B-8E65-08002B2BD119}' : 'ISupportErrorInfo',
'{14F65AE1-4671-11D4-8B1A-00105A49278B}' : 'ICADdyAddIn',
}
NamesToIIDMap = {
'ICADdyAddIn' : '{14F65AE1-4671-11D4-8B1A-00105A49278B}',
'ICADdy' : '{D330F3E0-0F91-11D4-AC6E-00105A4925FC}',
'ISupportErrorInfo' : '{DF0B3D60-548F-101B-8E65-08002B2BD119}',
'IEnumCADdyAddIn' : '{14F65AE3-4671-11D4-8B1A-00105A49278B}',
'ICADdyAddIns' : '{14F65AE2-4671-11D4-8B1A-00105A49278B}',
}
win32com.client.constants.__dicts__.append(constants.__dict__)
____________
Virus checked by G DATA AntiVirusKit
More information about the Python-win32
mailing list