Je peux créer une Uint8array dans une fenêtre IWebBrowser2:IWebBrowser2: L'utilisation d'un Uint8array (remplissage sans looping)
IHTMLWindow2 window = ...;
DISPID dispid_uint8array = ...;
VARIANT self;
self.vt = VT_NULL;
VARIANT length;
length.vt = VT_I4;
length.lVal = 100;
VARIANT args[2] = { self, length };
DISPID named_args[1] = { DISPID_THIS };
DISPPARAMS params;
params.rgvarg = args;
params.rgdispidNamedArgs = named_args;
params.cArgs = 2;
params.cNamedArgs = 1;
VARIANT result;
result.vt = VT_EMPTY;
HRESULT hr = container->Invoke(
dispid_uint8array, IID_NULL, LOCALE_USER_DEFAULT,
DISPATCH_METHOD, ¶ms, &result, nullptr, nullptr
);
assert(hr == S_OK);
assert(result.vt == VT_DISPATCH);
IDispatch my_new_uint8array = result.pdispVal;
Maintenant, je peux définir des éléments de champs my_new_uint8array
en utilisant IDispatch::Invoke(..., DISPATCH_PROPERTYPUT, ...)
dans une boucle.
Mais n'y a-t-il pas une interface appropriée pour remplir tout le tampon avec un seul appel? Par exemple. puis-je en quelque sorte récupérer le tampon contenu?
Existe-t-il une définition de l'interface quelque part, quelque chose comme IUint8Array
?
Ces tableaux ne sont-ils pas plus javascript (chakra)? https://docs.microsoft.com/en-us/scripting/chakra-hosting/jscreatetypedarray-function Je suis curieux de savoir comment obtenez-vous dispid_uint8array en premier lieu? –
@SimonMourier, j'ai simplement utilisé 'window-> GetIDsOfNames (...)' en fournissant '' Uint8Array ''. – kay
Auriez-vous un projet de reproduction prêt, par hasard? –