Il 27/11/2015 08:29, Matteo Boscolo ha scritto:
ciao a tutti,
mi sto divertendo ad estendere python con del cpp..
il mio problema e questo:
ho questa funzioncina che mi dovrebbe convertire args e
memorizzarmelo in una variabile globale. il tutto mi si rompe quando
vado a castare il mio pyApplication con un oggetto CComPtr
static PyObject *
connect(PyObject * self, PyObject * args)
{
PyObject * pyApplication;
CComPtr<IUnknown> pUnk;
//try to get active object
if (!PyArg_ParseTuple(args, "O", &pyApplication))
return NULL;
pUnk=(CComPtr<IUnknown> )pyApplication; //<<---- qui mi da
errore in compilazione
HRESULT hRes = pUnk->QueryInterface(&pApp);
Py_INCREF(Py_None);
return Py_None;
}
l'oggetto che passo com args viene generato da python con iDispatch in
questo modo
_application = Dispatch('TD_appl.Application',
clsctx=CLSCTX_LOCAL_SERVER | CLSCTX_ACTIVATE_64_BIT_SERVER)
td.connect(_application)
td e' il mio modulo di estensione python ..
Giusto se a qualcuno capitasse di dover fare una cosa come questa
In pratica se si include #include "PythonCOM.h" si hanno ha a
disposizione l'interfaccia PyIUnknown , che con il metodo m_obj fa
quello che serve
ciao
Matteo
copio qui il codice ....
static PyObject *
connect(PyObject * self, PyObject * args)
{
PyObject * pyApplication;
CComPtr<IUnknown> pUnk;
IUnknown *ret;
//try to get active object
if (!PyArg_ParseTuple(args, "O", &pyApplication))
return NULL;
pUnk = ((PyIUnknown *)pyApplication)->m_obj;
HRESULT hRes = pUnk->QueryInterface(&pApp);
Py_INCREF(Py_None);
return Py_None;
}
---
Questa e-mail รจ stata controllata per individuare virus con Avast antivirus.
http://www.avast.com
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python