Здравствуйте, OverCrash, Вы писали:
OC>Hi all
OC>Собственно сабж.
OC>каким таким непонятным вариантом засылается пост-дата
OC>в мсдн написано что The post data specified by PostData is passed as a SAFEARRAY Data Type structure. The variant should be of type VT_ARRAY and point to a SAFEARRAY Data Type. The SAFEARRAY Data Type should be of element type VT_UI1, dimension one, and have an element count equal to the number of bytes of post data.
OC>мож кусочком кода кто поделится ?
Могу привести для C++ Builder:
// *Method 1*
TVariant vtEmpty;
TVariant vtPostDataArray;
char *str = "action=LogMeIn&username=MyName&password=MyPass";
SAFEARRAY FAR *psa = NULL;
SAFEARRAYBOUND sabound[48];
sabound[0].cElements = strlen(str);
sabound[0].lLbound = 0;
psa = SafeArrayCreate(VT_UI1, 1, sabound);
for(unsigned int n = 0; n < strlen(str); n++){
SafeArrayPutElement(psa, (long*)0, (void*)str[n]);
}
vtEmpty.vt = VT_EMPTY;
vtPostDataArray.vt = VT_ARRAY;
vtPostDataArray.SetSAFEARRAY(psa);
// or vtPostDataArray=psa;
TVariant vAddress = {"http://my.server/test/postresults.asp"};
CppWebBrowser1->Navigate2(&vAddress, &vtEmpty, &vtEmpty, &vtPostDataArray, &vtEmpty);
SafeArrayDestroy(psa);
// *Method 2*
TVariant vtEmpty;
char *str = "action=LogMeIn&username=MyName&password=MyPass";
TSafeArrayDim1 dim(strlen(str));
TSafeArrayUInt1 uint_array(dim);
for(unsigned int n = 0; n < strlen(str); n++){
uint_array[n]=str[n];
}
SAFEARRAY* sa = uint_array.Detach();
SafeArrayCopy(sa, &uint_array);
vtEmpty.vt = VT_EMPTY;
TVariant vAddress = {"http://my.server/test/postresults.asp"};
CppWebBrowser1->Navigate2(&vAddress, &vtEmpty, &vtEmpty, &sa, &vtEmpty);
SafeArrayDestroy(sa);