TypeLib for Python COM Server?

mlp at my-deja.com mlp at my-deja.com
Thu Jul 13 08:51:24 EDT 2000


that's nice. and thanks for the reply.  however, i already got a python
module for generating a typelib from a python server.  i got it from
arpad kiss.  tell me if you're interested ...

morten



In article
<326536345498D311B3BC00105A39802A07478A at newsintern.dspace.de>,
  Stefan Migowsky <smigowsky at dspace.de> wrote:
> Hi,
>
> there is no general support for typelib generation. But as I know all
> propertiues and methods of a Python COM Server start with the dispid
1000.
>
> So writing the IDL File by hand is no problem. Just take the same
GUIDs,
> Names and the right DispID. So here is a little example :
>
> Python File :
>
> _reg_clsid_ = "{5B24BFC0-EF45-11d3-9B5F-0090274354BC}"
> _reg_libname_ = "PythonComInterpreter Typelib"
>
> class PythonComInterpreter:
>     """Interface PythonComInterpreter"""
>
>     _public_methods_ = ['Exec','Eval']
>
>     _reg_progid_     = "PythonComInterpreter"
>     _reg_verprogid_  = "PythonComInterpreter.1"
>     _reg_clsid_      =  '{281AC1E3-E3D2-11D3-9B37-00902722BDE1}'
>     _reg_desc_       = "PythonComInterpreterClass"
>     _reg_class_spec_ = "PythonComInterpreter.PythonComInterpreter"
>
>     def __init__(self):
>         self.Dict = {}
>         self.Dict["__name__"] = "__main__"
>         self.Dict["__builtins__"] = __builtins__
>         self.Dict["__doc__"] = ""
>
>     def Exec(self, Cmd):
>         exec str(Cmd) in self.Dict
>
>     def Eval(self, Cmd):
>         return eval(str(Cmd),self.Dict)
>
> if __name__ == '__main__':
>   print 'Registering Python COM Server ...'
>   import win32com.Server.register
>   win32com.Server.register.UseCommandLine(PythonComInterpreter)
>   print 'Registering finished'
>
> ######################################################################
> Corresponding IDL File:
> ######################################################################
>
> [
>   uuid(5B24BFC0-EF45-11D3-9B5F-0090274354BC),    // _reg_clsid_
Typelib
>   version(1.0),
>   helpstring("PythonComInterpreter 1.0 Type Library")
> ]
> library Interpreter
> {
>     importlib("STDOLE2.TLB");
>
>     // Forward declare all types defined in this typelib
>     dispinterface IPythonComInterpreter;
>
>     [
>       uuid(281AC1E3-E3D2-11D3-9B37-00902722BDE1), // _reg_clsid_
> PythonComInterpreter Class
>       helpstring("PythonComInterpreter Class")
>     ]
>     coclass PythonComInterpreter {                // _reg_progid_
> PythonComInterpreter Class
>         [default] dispinterface IPythonComInterpreter;
>     };
>
>     [
>       uuid(F8887DE1-EF58-11D3-9B5F-0090274354BC),
>       helpstring("IPythonComInterpreter Interface")
>     ]
>     dispinterface IPythonComInterpreter {
>         properties:
>         methods:
>             [id(1000), helpstring("Executes a Pythonstatement")]
>             VARIANT Exec([in] BSTR cmd);
>             [id(1001), helpstring("Evals a Pythonstatement")]
>             VARIANT Eval([in] BSTR cmd);
>     };
> };
>
> 	Stefan
>
> >-----Original Message-----
> >From: mlp at amrose.dk [mailto:mlp at amrose.dk]
> >Sent: Wednesday, July 12, 2000 1:37 PM
> >To: python-list at python.org
> >Subject: TypeLib for Python COM Server?
> >
> >
> >hi all.
> >
> >i'm in a situation where i'd like to have a typelib for a python com
> >server, for use in a c++ client.
> >
> >i tried to just use midl on an idl i made to reflect the interface of
> >the python server.  this didn't work out, since when compiling the
> >client code the tlb file is not recognized.
> >
> >my question: is there an automatic, easy, or standard, way to produce
a
> >typelibrary for a com server implemented in python?  if not, is it
> >possible at all?  if so, could anybody help me with the details?  a
> >complete example would be splendid!
> >
> >python rules!
> >'gards,
> >morten lind petersen, denmark
> >
> >
> >Sent via Deja.com http://www.deja.com/
> >Before you buy.
> >--
> >http://www.python.org/mailman/listinfo/python-list
> >
>
>


Sent via Deja.com http://www.deja.com/
Before you buy.



More information about the Python-list mailing list