Re: [Python] Cast su pyobject

2015-11-28 Per discussione Matteo Boscolo

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 pUnk;
//try to get active object
if (!PyArg_ParseTuple(args, "O", ))
return NULL;
pUnk=(CComPtr )pyApplication; //<< qui mi da 
errore in compilazione


HRESULT hRes = pUnk->QueryInterface();
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 pUnk;
IUnknown *ret;
//try to get active object
if (!PyArg_ParseTuple(args, "O", ))
return NULL;

pUnk = ((PyIUnknown *)pyApplication)->m_obj;
HRESULT hRes = pUnk->QueryInterface();

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


[Python] Cast su pyobject

2015-11-26 Per discussione Matteo Boscolo

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 pUnk;
//try to get active object
if (!PyArg_ParseTuple(args, "O", ))
return NULL;
pUnk=(CComPtr )pyApplication; //<< qui mi da 
errore in compilazione


HRESULT hRes = pUnk->QueryInterface();
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 ..

grazie mille
ciao
Matteo



---
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