[python-win32] Creating a TLB for PythonCOM server
Mariano Reingart
reingart at gmail.com
Thu Dec 16 21:08:01 CET 2010
Hello
I'm trying to create a type library (TLB) using MIDL.EXE for a
PythonCom server, but I don't fully understand the brief MSDN
ducumentation:
http://msdn.microsoft.com/en-us/library/ms690150(v=VS.85).aspx
I've been able to create the TLB file, but when using it in VB, I get
a Run-time error '13': "Type mismatch" with this code:
Dim WSAA As PyAfipWs.WSAA
Set WSAA = CreateObject("WSAA")
Debug.Print WSAA.Version
Testing it with python, makepy.py sucessfully creates the python
classes, but it doesn't use them when I do:
win32com.client.Dispatch("WSAA")
Following is the code in question:
Python COM server (stripped version):
-------------------------------------
class WSAA:
_public_methods_ = ['CreateTRA']
_public_attrs_ = _readonly_attrs_ = ['Version']
_reg_progid_ = "WSAA"
_reg_clsid_ = "{6268820C-8900-4AE9-8A2D-F0A1EBD4CAC5}"
def __init__(self):
self.Version = "1234"
def CreateTRA(self, service="wsfe", ttl=2400):
return "pass"
full code at:
http://code.google.com/p/pyafipws/source/browse/pyafipws.py
IDL file (stripped version):
----------------------------
import "unknwn.idl","oaidl.idl";
[
uuid(6268820C-8900-4AE9-8A2D-F0A1EBD4CAC5),
helpstring("PyAfipWs WSAA interface"),
pointer_default(unique),
//dual,
//oleautomation
object
]
interface WSAAif : IDispatch //IUnknown
{
HRESULT CreateTRA([in] VARIANT service, [in] VARIANT ttl,
[out, retval] VARIANT * tra);
[propget] HRESULT Version( [out, retval] VARIANT * sign);
};
[
uuid(a03d1423-b1ec-11d0-8c3a-00c04fc31d2f),
version(1.0),
helpstring("PyAfipWs Type Library"),
] library PyAfipWs
{
importlib("stdole32.tlb");
[
uuid(a03d1422-b1ec-11d0-8c3a-00c04fc31d2f),
helpstring("WSAA Component Class")
] coclass WSAA
{
[default]interface WSAAif;
}
}; //end library def
I think I'm missing something and surely I'm doing something wrong
(related to IUnknown/IDispatch, dual/oleautomation/object, CLSID,
PROGID, etc.). I've tested many combinations and none seems to work.
Do you have any advice?
Thanks in advance,
Mariano Reingart
http://www.sistemasagiles.com.ar
http://reingart.blogspot.com
More information about the python-win32
mailing list