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.
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);
}
Je dois envoyer pSnV.
Mais la je sèche depuis un bon moment :-(
Quelqu'un a une idée?
Merci d'avance