Problem using win32com

G

Guest

Hi,

A month ago, I decided to move from Delphi to Python/wxPython for a good deal of my development work, and for the past few projects (which included a full re-write of our point-of-sale system) I've had no problems and been very pleased with the move.

We're Sage (accounting software) developers and frequently link into Line 50 using a Sage supplied COM server. In Delphi, the code to create the client and a workspace (which is required later) is as follows:

SDO := CreateOLEObject('SDOEngine.10');
WS := SDO.Workspaces.Add('abc');

So naturally, I'd expect the following Python code to work:

import win32com.client
SDO = win32com.client.Dispatch("SDOEngine.10")
WS = SDO.Workspaces.Add("abc")

But at the last stage, I get an error:

Traceback (most recent call last):
File "<pyshell#4>", line 1, in -toplevel-
ws=sdo.Workspaces.Add("ss")
File "C:\PYTHON23\lib\site-packages\win32com\client\dynamic.py", line 154, in __call__
return self._get_good_object_(self._oleobj_.Invoke(*allArgs),self._olerepr_.defaultDispatchName,None)
com_error: (-2147352573, 'Member not found.', None, None)

So I used MakePy to generate the relevant Python interface code, and tried the following:

SDO=win32com.client.gencache.EnsureModule("{ACE2C5EC-2EC0-4AEB-8B0D-27A5A1ED6421}",0,10,0)
WS=SDO.Workspaces.Add("abc")

But now I get:

Traceback (most recent call last):
File "<interactive input>", line 1, in ?
TypeError: unbound method Add() must be called with IWorkspaces instance as first argument (got str instance instead)

The relevant MakePy generated code looks like this:

class IWorkspaces(DispatchBaseClass):
CLSID = IID('{7075CC61-F056-11D0-A34B-000000000000}')
coclass_clsid = IID('{7075CC63-F056-11D0-A34B-000000000000}')

def Add(self, Name=defaultNamedNotOptArg):
ret = self._oleobj_.InvokeTypes(2, LCID, 1, (9, 0), ((8, 0),),Name)
if ret is not None:
ret = Dispatch(ret, 'Add', None, UnicodeToString=0)
return ret

class Workspaces(CoClassBaseClass): # A CoClass
CLSID = IID('{7075CC63-F056-11D0-A34B-000000000000}')
coclass_sources = [
]
coclass_interfaces = [
IWorkspaces,
]
default_interface = IWorkspaces

What am I doing wrong? And more importantly, what can I do about it? I suspect there's a really simple answer which begins "Chris, you're being a fool...", but it's now pretty late, and I have other matters to deal with for the next few hours, so any help would be much appreciated.

Regards,


Chris
 
O

oleaw

I am having a similar problem with a com+ API created in delphi. is this a
win32com problem?
 
O

oleaw

I am having a similar problem with a com+ API created in delphi. is this a
win32com problem?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,767
Messages
2,569,571
Members
45,045
Latest member
DRCM

Latest Threads

Top