Python et les pointeurs

kschn Messages postés 13 Date d'inscription samedi 21 février 2004 Statut Membre Dernière intervention 30 mai 2005 - 30 mai 2005 à 14:41
taz_iup Messages postés 179 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 21 mai 2014 - 31 mai 2005 à 09:06
Voila le problème j'arrive a intercepter les WM_COPYDATA qui viennent
de lapplication à laquelle je me connecte mais le problème c'est que je
recoit en fait un pointeur vers un copydatastruct ...



Je sais comment envoyer des pointeurs vers des copydatastruct via
sendmessage() mais comment acceder à cette structure en python Oo ?



Le code pour récuperer le pointeur: (on utilise un buffer_info() pour récuperer l'addresse)

cds = struct.pack(copyDataStruct, 9420, msg[1], msg[0])
cdsa = array.array('c', cds)
cdsb = cdsa.buffer_info()

Sinon je saurais décoder le copydatastruct si je l'avait sous forme de python string avec un
(struct.unpack("IIP",lParam)).

Donc comment faire ? Existe-t-il un moyen de récupérer la structure à partir du pointeur ?
Dans mon cas une simple chaîne est codée dans le copydatastruct ...

C'est le dernier point qu'il me manque pour boucler ce program (controlleur foobar2000 en python
pour worldofwarcraft.)

1 réponse

taz_iup Messages postés 179 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 21 mai 2014 3
31 mai 2005 à 09:06
Ton code est un peu sommaire, vu que les pointeurs ne sont pas utilisé
dans les programmes python, sauf cas exceptionnel. Personnelement, je
n'en ai pas encore utilisé, donc si tu pouvait nous detailler un peu
plus d'ou vient ton WM_COPYDATA, ce que contient ton CopyDataStructure,
parce que la d'apres ce que je lis il doit contenir 'IIP'.

Sinon, j'ai trouver une page sur python.org qui parle de buffer:

http://www.python.org/doc/2.4.1/api/buffer-structs.html

mais apparement c'est pour ceux qui programme en C et qui utilise du python dans leur programmes.

donne nous au moins le prototype de la fonction qui te retourne ton lparam.
0
Rejoignez-nous