Hello, I am trying to use PythonCOM to interact with a provided proprietary COM object. The Object consists of three dispatch interfaces:
IApplication IApplicationEvents IDocumentEvents This can be accessed using the CoBaseClass by ProgID 'OpalControl.Applcation' - so far so good. The first thing I do is to run the following code: import win32com.client import time objCybio = win32com.client.Dispatch('OpalControl.Application', CybioEvents) objCybio.ConfigFile = r"C:\CyBio Software\Config\opalctrl.ini" objCybio.Config = "CyBi-Well" objCybio.visible = True objCybio.OpenDocument(r'C:\testscript.igl', True) time.sleep(2) objCybio.CloseDocument(r'C:\testscript.igl', True) objCybio = None This works fine and it does what I expect, so the next thing to do is to try and write something to get the events: import win32com.client import time import win32com.client.gencache class CybioEvents(object): def __init__(self): super(CybioEvents, self).__init__() def onCommand(pstrTitle, pstrParam): print 'OnCommand\n', pstrTitle,'\n', pstrParam objCybio = win32com.client.DispatchWithEvents('OpalControl.Application', CybioEvents) objCybio.ConfigFile = r"C:\CyBio Software\Config\opalctrl.ini" objCybio.Config = "CyBi-Well" objCybio.visible = True objCybio.OpenDocument(r'C:\testscript.igl', True) time.sleep(2) objCybio.CloseDocument(r'C:\testscript.igl', True) objCybio = None When I run this, I get the following error: Traceback (most recent call last): File "C:\Program Files\Python24\Lib\site-packages\pythonwin\pywin\framework\scriptutils.py", line 310, in RunScript exec codeObject in __main__.__dict__ File "C:\Documents and Settings\benn\Desktop\cybio test.py", line 9, in ? objCybio = win32com.client.DispatchWithEvents("OpalControl.Application", CybioEvents) File "C:\Program Files\Python24\Lib\site-packages\win32com\client\__init__.py", line 254, in DispatchWithEvents raise TypeError, "This COM object can not automate the makepy process - please run makepy manually for this object" TypeError: This COM object can not automate the makepy process - please run makepy manually for this object So no probs, using the makepy utility in PythonWin (I'll automate this later ;-) ) I generate the required stubs and a file does appear which seems to be OK (contains the correct GUIDs and interfaces and so on). Running this again, I get : Traceback (most recent call last): File "C:\Program Files\Python24\Lib\site-packages\pythonwin\pywin\framework\scriptutils.py", line 310, in RunScript exec codeObject in __main__.__dict__ File "C:\Documents and Settings\benn\Desktop\cybio test.py", line 9, in ? objCybio = win32com.client.DispatchWithEvents("OpalControl.Application", CybioEvents) File "C:\Program Files\Python24\Lib\site-packages\win32com\client\__init__.py", line 254, in DispatchWithEvents raise TypeError, "This COM object can not automate the makepy process - please run makepy manually for this object" TypeError: This COM object can not automate the makepy process - please run makepy manually for this object Basically the same as above, I've checked this COM object out with VB and it works fine - no probs. In addition looking at the stub file in the cache in gen_py, the class has not been compiled to a pyc file (I'm assuming that it should be here) so it seems like it is not even finding this - although that is a guess. I've also tried using the GUID to get hold of the CoBaseClass using the GUID but I get the same error, unfortunately I cannot give you the COM object as it is dongle protected and therefore will not run. I can attach the generated file from makepy but I won't do that as yet because it is relatively big. Can anyone shed any light as to how I can track down this problem? Thanks in advance for your help. Cheers, Neil -- Neil Benn MSc Head of Automation Cenix BioScience GmbH Tatzberg 47 01307 Dresden Germany http://wwww.cenix-bioscience.com _______________________________________________ Python-win32 mailing list Python-win32@python.org http://mail.python.org/mailman/listinfo/python-win32