[EMAIL PROTECTED] schrieb: > [EMAIL PROTECTED] skrev: > >> Hi, >> >> I wish to write a Python wrapper for my C# COM object but am unsure >> where to start. I have a dll and a tlb file, and I can use this object >> in C via the following code - >> >> // ConsolApp.cpp : Defines the entry point for the console application. >> // >> #include "stdafx.h" >> #include "windows.h" >> #include "stdio.h" >> #import "C:\Documents and Settings\X\Mina dokument\Visual Studio >> 2005\Projects\X_COMObject\X_COMObject\bin\Debug\X_COMObject.tlb" >> using namespace X_COMObject; >> >> int _tmain(int argc, _TCHAR* argv[]) >> { >> CoInitialize(NULL); >> >> X_COMObject::XCOM_InterfacePtr p(__uuidof(X_COMObject::XCOM_Class)); >> XCOM_Interface *X_com_ptr ; >> X_com_ptr = p ; >> X_com_ptr->SetID(10); >> int x = X_com_ptr->GetID(); >> printf("%d",x); >> getchar(); >> >> return 0; >> } >> >> Can anyone offer me some tips as to how to do this in Python? >> >> Thanks very much for your help, >> >> Barry. > > This is what I've done so far, but I know I'm not doing this correctly. > Can anyone help me out? > > #import pythoncom > #pythoncom.CoInitialize()
The above is unneeded if you use comtypes as below (and is unneeded when using pythoncom, as well). > from comtypes.client import GetModule, CreateObject > > module = GetModule("C:\\Documents and Settings\\X\\Mina > dokument\\Visual Studio > 2005\\Projects\\X_COMObject\\X_COMObject\\bin\\Debug\\X_COMObject.tlb") > You don't intantiate the interface, you have to instantiate the COM object. Something like CreateObject("XCOM_Class") but of course you have to use the correct argument in the call - the progid of the COM object. Alternatively you can use the CoClass from the typelibrary, look into the generated module in the comtypes\gen directory for a class derived from comtypes.CoClass. InternetExplorer, for example, can be started in these ways: # using the progid: ie = CreateObject("InternetExplorer.Application") # using the clsid: ie = CreateObject("{0002DF01-0000-0000-C000-000000000046}") # using the coclass from the generated module: mod = GetModule("shdocvw.dll") ie = CreateObject(mod.InternetExplorer) Thomas -- http://mail.python.org/mailman/listinfo/python-list