win32com: get error 80004005 in attempt to use a pythom COM s erver - found it!
LArbilla at pav.com
LArbilla at pav.com
Mon Aug 6 15:54:30 EDT 2001
I found the problems:
1) I had a field, _pid, in class RAE, which I meant as private. However it
needed to be declared
in _public_attrs_. Is there a _private_attrs_ declaration ?
2) Also, the line:
self._pid = raeapimodule.ConfigFromFile(fileName)
needed to be changed to
self._pid =
raeapimodule.ConfigFromFile(str(fileName))
to avoid an error converting between Unicode and Python strings.
FYI,
Laura.
> -----Original Message-----
> From: Laura Arbilla
> Sent: Monday, August 06, 2001 12:15 PM
> To: 'python-list at python.org'
> Subject: win32com: get error 80004005 in attempt to use a pythom COM
> server
>
> I'm seriously stuck (2 days now) at my first attempt to use win32com to
> write a com server in python.
> I've search and read all I could find and I still don't see how to solve
> the problem:
>
> 1) I wrote a simple COM server in python, it registers and I can see it in
> PythonWin's COM Browser:
> 2) I tried to use it from VB:
> Dim theServer As Object
> Set theServer = CreateObject("Python.Rae")
> and got error -2147467259 (80004005) "Unexpected Python Error:
> exceptions.ImportError: No module named raecom"
> 3) So, I decided to first test it from Python.
> The client calls the server's __init__ (from
> win32com.client.Dispatch),
> but the call fails with the same error (in python, it only shows
> -2147467259)
> 3) I tried:
> - putting all of the code in c:\program files\python (where python
> and win32com are installed)
> and it didn't make a difference
> - I also tried commenting out the line "_reg_class_spec", which has
> the only reference to "raecom"
> and it didn't make a difference
>
> I would appreciate any tips. I'm sure it is something simple.
> Below is the code for the server, the client and the "trace".
> Thanks a bunch!!
> Laura.
> larbilla at pav.com
>
> SERVER CODE:
> import win32com.server
> import raeapimodule
> import win32traceutil
>
> class Rae:
> _public_methods_ = ['ConfigFromFile', 'Init']
> _public_attrs_ = ['projectName']
> _readonly_attrs_ = ['projectName']
> _reg_clsid_ = "{8680B790-875A-11d5-9A59-005004630197}"
> _reg_progid_ = "Python.Rae"
> _reg_desc_ = "Python COM RAE Wrapper"
> _reg_class_spec_ = "raecom.Rae"
> #only for dual interfaces
> # _com_interfaces_ = ['IRae']
> def __init__(self):
> print "raecomp.py.class Rae.__init__ being called"
> self._pid = -1
> print "raecomp.py.class Rae.__init__ uno"
> self.projectName = ""
> print "raecomp.py.class Rae.__init__ dos"
> return 1
> def ConfigFromFile(self, fileName):
> print "raecom.py.class Rae.ConfigFromFile being called"
> self._pid = raeapimodule.ConfigFromFile(fileName)
> if (self._pid > 0):
> self.projectName = fileName
> return self._pid
> def Init(self):
> print "raecom.py.class Rae.Init being called"
> status = raeapimodule.Init(self._pid)
> return status
>
> if __name__ == '__main__':
> import win32com.server.register
> win32com.server.register.UseCommandLine(Rae)
>
> CLIENT CODE:
>
> import win32com.client
> print "start"
> o = win32com.client.Dispatch("Python.Rae")
> print "called dispatch"
> o.ConfigFromFile("c:\\larbilla\\test\\raetest\\pull_multimap_4.pi_ot_confi
> g")
> print "called configfromfile"
> print o.projectName
>
> TRACEUTIL:
>
> Registered: Python.Rae
> start <--- this actually shows in the command line
> raecomp.py.class Rae.__init__ being called
> raecomp.py.class Rae.__init__ uno
> raecomp.py.class Rae.__init__ dos
> Traceback (innermost last):
> File "raecomtest.py", line 4, in ?
> o = win32com.client.Dispatch("Python.Rae")
> File "C:\Program Files\Python\win32com\client\__init__.py", line 94, in
> Dispatch
> dispatch, userName =
> dynamic._GetGoodDispatchAndUserName(dispatch,userName,clsctx)
> File "C:\Program Files\Python\win32com\client\dynamic.py", line 80, in
> _GetGoodDispatchAndUserName
> return (_GetGoodDispatch(IDispatch, clsctx), userName)
> File "C:\Program Files\Python\win32com\client\dynamic.py", line 71, in
> _GetGoodDispatch
> IDispatch = pythoncom.CoCreateInstance(IDispatch, None, clsctx,
> pythoncom.IID_IDispatch)
> pywintypes.com_error: (-2147467259, 'Unspecified error', None, None)
>
>
More information about the Python-list
mailing list