Bonjour,
j'ai déjà poster la question dans l'espace c#, mais pour le moment rien. Donc je me dis qu'un d'entre vous aurait peut-être une idée.
j'ai besoin de passer à un ActiveX un VARIANTde type VT_ARRAY avec des données de type VT_UI1, la longueur du tableau doit être stocké dans cElement.
J'ai essayé de faire un tableau de byte, de mettre dans la première ligne le nombre de byte à passer. Et dans la suite du tableau les valeurs en byte.
Mais lorsque j'appelle la fonction, j'ai l'erreur suivante à l'exécution. Le type ne correspond pas. (Exception de HRESULT : 0x80020005 (DISP_E_TYPEMISMATCH), je pense donc à l'objet de type VT_ARRAY.
J'ai un sample en C++: (mais j'aimerais faire la même chose en c#)
block est un objet avec quelques propriétés de type byte dont la propriété "long" ainsi qu'un tableau de byte.
Je dois envoyer pSnV.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 VARIANT pSnV; SAFEARRAYBOUND pDd; pDd.cElements = (DWORD)block->long +4; pDd.lLbound = 0; pSnV.vt = VT_UI1 | VT_ARRAY; pSnV.parray = ::SafeArrayCreate(VT_UI1, 1, &pDd); if (snV.parray != NULL) { BYTE* pByte; SafeArrayAccessData(pSnV.parray, (void**)&pByte); memcpy(pByte, block, block->long +4); SafeArrayUnaccessData(pSnV.parray); }
Mais la je sèche depuis un bon moment :-(
Quelqu'un a une idée?
Merci d'avance
Partager