I'm trying to use a 3rd party COM dll for which I have only instructions how to use it in VB. The instructions say I have to create a cFM2Listener object, obtain an IFM2Listener interface from it, implement my own version of a cFM2DeviceEvents object and assign that to the DeviceEvents property of the cFM2Listener object.
I called makepy on the dll (FieldMax2DLLServer.dll) and got a 3B64E1EF-5DBC-4CCA-9C2A-F2D10C510050x0x2x0.py file. Then I try to implement the cFM2DeviceEvents object which has to implement the IFM2DeviceEvents interface. import win32com.client import win32com.server.util from win32com import universal class Notifier(object): _public_methods_ = [ 'DisplayErrorToClient', 'NotifyData', 'NotifyDeviceStatus', 'DisplayZeroDeviceProgressToClient'] _public_attrs_ = [ 'CallbackEvent', 'CallbackMessage', 'DeviceIndex', 'SerialNumber', 'ZeroDeviceTimeoutCounter'] _com_interfaces_ = [ '_IFM2DeviceEvents' ] _typelib_guid_ = '{3B64E1EF-5DBC-4CCA-9C2A-F2D10C510050}' _typelib_version = 2, 0 def __init__(self): self._CallbackEvent = "" self._CallbackMessage = "" self._DeviceIndex = 0 self._SerialNumber = "" self._ZeroDeviceTimeoutCounter = 0 def DisplayErrorToClient(self): print "DisplayErrorToClient" def NotifyData(self, CallbackData): print "NotifyData" def NotifyDeviceStatus(self, CallbackData, DevicesList): print "NotifyDeviceStatus" def DisplayZeroDeviceProgressToClient(self): print "DisplayZeroDeviceProgressToClient" def get_CallbackEvent(self): return self._CallbackEvent def set_CallbackEvent(self, value): self._CallbackEvent = value CallbackEvent = property(get_CallbackEvent, set_CallbackEvent, doc = "CallbackEvent property") def get_DeviceIndex(self): return self._DeviceIndex def set_DeviceIndex(self, value): self._DeviceIndex = value DeviceIndex = property(get_DeviceIndex, set_DeviceIndex, doc = "DeviceIndex property") def get_SerialNumber(self): return self._SerialNumber def set_SerialNumber(self, value): self._SerialNumber = value SerialNumber = property(get_SerialNumber, set_SerialNumber, doc = "SerialNumber property") def set_ZeroDeviceTimeoutCounter(self, value): self._ZeroDeviceTimeoutCounter = value ZeroDeviceTimeoutCounter = property(fset = set_ZeroDeviceTimeoutCounter, doc = "ZeroDeviceTimeoutCounter property") win32com.client.gencache.EnsureModule('{3B64E1EF-5DBC-4CCA-9C2A-F2D10C510050}', 0, 2, 0) print "gencache" fml = win32com.client.Dispatch("FieldMax2DLLServer.cFM2Listener") print fml universal.RegisterInterfaces('{3B64E1EF-5DBC-4CCA-9C2A-F2D10C510050}', 0, 2, 0, ['_IFM2DeviceEvents']) print "RegisterInterfaces" NM = Notifier() print NM notifyMe = win32com.server.util.wrap(NM, useDispatcher=1) And here I get the following error: Traceback (most recent call last): File "C:\myprogs\python\comtest\comtest.py", line 63, in <module> notifyMe = win32com.server.util.wrap(NM, useDispatcher=1) File "C:\Python27\lib\site-packages\win32com\server\util.py", line 25, in wrap ob = useDispatcher(usePolicy, ob) File "C:\Python27\lib\site-packages\win32com\server\dispatcher.py", line 203, in __init__ DispatcherTrace.__init__(self, policyClass, object) File "C:\Python27\lib\site-packages\win32com\server\dispatcher.py", line 24, in __init__ self.policy = policyClass(object) File "C:\Python27\lib\site-packages\win32com\server\policy.py", line 181, in __init__ self._wrap_(object) File "C:\Python27\lib\site-packages\win32com\server\policy.py", line 466, in _wrap_ tlb_major, tlb_minor, interfaces) File "C:\Python27\lib\site-packages\win32com\universal.py", line 21, in RegisterInterfaces tlb = pythoncom.LoadRegTypeLib(typelibGUID, major, minor, lcid) com_error: (-2147319779, 'Bibliothek nicht registriert.', None, None) The message in the last line translates to 'library not registered'. I have a sample VB program which works fine, so I don't think this means there is something wrong with the FieldMax2DLLServer.dll. But what am I doing wrong here? -- PGP fingerprint: A391 4109 F8D0 F67B C504 1EF6 0158 E3BB 3687 53CF _______________________________________________ python-win32 mailing list python-win32@python.org http://mail.python.org/mailman/listinfo/python-win32