[python-win32] Passing IDispatch from a C program to Python -- Is it possible?

Mark Hammond mhammond@skippinet.com.au
Tue, 4 Feb 2003 16:49:41 +1100


This is a multi-part message in MIME format.

------=_NextPart_000_0032_01C2CC6D.6B1E88E0
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: 7bit

If you link to pythoncomxx.dll, you can use any of the functions in
pythoncom.h specifically for this purpose.

Mark.

> -----Original Message-----
> From: python-win32-admin@python.org
> [mailto:python-win32-admin@python.org]On Behalf Of Finn Bragason
> Sent: Tuesday, 4 February 2003 3:44 PM
> To: python-win32@python.org
> Subject: [python-win32] Passing IDispatch from a C program to 
> Python --
> Is it possible?
> 
> 
> I want to create a COM object in a C/C++ program and pass it to an
> embedded Python program.
> So my C/C++ program is something like:
> 
> // converter function
> int converter(PyObject * obj, void * p)
> {
> 	// Initialise obj with p -- somehow
> 	return 1;
> }
> 
> 
> main()
> ...
> // create a COM object
> IConnectPtr conn;;
> HRESULT hr = conn.CreateInstance(__uuidof(Connect));
> ... do something with conn
> // Do the Python embedding initialise
> Py_Initialize();
> ..etc..etc
> // Create a PyObject from the conn Interface to pass to Python
> PyObject * p = Py_BuildValue("O&", converter, *conn);
> // Set the newly created object as a parameter to python
> PyTuple_SetItem(pArgs, 1, p);
> // Call Python
> PyObject_CallObject(func, pArgs);
> 
> My Python program would be something like:
> def func(conn):
> 	# Test if conn object is connected
> 	if conn.IsConnected:
> 		# do something with it
> 
> Any comments greatly appreciated.
> Fin
> 
> 
> _______________________________________________
> Python-win32 mailing list
> Python-win32@python.org
> http://mail.python.org/mailman/listinfo/python-win32
> 

------=_NextPart_000_0032_01C2CC6D.6B1E88E0
Content-Type: application/ms-tnef;
	name="winmail.dat"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
	filename="winmail.dat"

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
AEYAAAAADoUAAAAAAAADABOACCAGAAAAAADAAAAAAAAARgAAAAARhQAAAAAAAAMAFIAIIAYAAAAA
AMAAAAAAAABGAAAAABiFAAAAAAAACwAVgAggBgAAAAAAwAAAAAAAAEYAAAAABoUAAAAAAAADABaA
CCAGAAAAAADAAAAAAAAARgAAAAABhQAAAAAAAAIB+A8BAAAAEAAAAHHEQImDsLJPiGPuZqj3mv8C
AfoPAQAAABAAAABxxECJg7CyT4hj7mao95r/AgH7DwEAAACSAAAAAAAAADihuxAF5RAaobsIACsq
VsIAAG1zcHN0LmRsbAAAAAAATklUQfm/uAEAqgA32W4AAABFOlxEb2N1bWVudHMgYW5kIFNldHRp
bmdzXHNraXBcTG9jYWwgU2V0dGluZ3NcQXBwbGljYXRpb24gRGF0YVxNaWNyb3NvZnRcT3V0bG9v
a1xvdXRsb29rLnBzdAAAAAMA/g8FAAAAAwANNP03AAACAX8AAQAAADEAAAAwMDAwMDAwMDcxQzQ0
MDg5ODNCMEIyNEY4ODYzRUU2NkE4Rjc5QUZGMjQwQkMxMDAAAAAAAwAGEGt1xDgDAAcQdwQAAAMA
EBAAAAAAAwAREAEAAAAeAAgQAQAAAGUAAABJRllPVUxJTktUT1BZVEhPTkNPTVhYRExMLFlPVUNB
TlVTRUFOWU9GVEhFRlVOQ1RJT05TSU5QWVRIT05DT01IU1BFQ0lGSUNBTExZRk9SVEhJU1BVUlBP
U0VNQVJLLS0tLS1PAAAAAJtd

------=_NextPart_000_0032_01C2CC6D.6B1E88E0--