Здравствуйте, multipasport, Вы писали:
M>Есть BHO.
M>В нем ловлю BEFORENAVIGATE2. Это работает. GetPOST() запускается. Подскажите последовательность действий в GetPOST() для получения PostData.
Где-то так:
VARIANT* PostData = &pDispParams->rgvarg[2];
if (PostData->vt == (VT_VARIANT|VT_BYREF) && PostData->pvarVal->vt != VT_EMPTY )
{
char *szTemp = NULL, *szPostData = NULL;
long plLbound, plUbound;
SAFEARRAY *parrTemp = PostData->pvarVal->parray;
SafeArrayAccessData(parrTemp, (void HUGEP **) &szTemp);
SafeArrayGetLBound(parrTemp, 1, &plLbound);
SafeArrayGetUBound(parrTemp, 1, &plUbound);
szPostData = new char[plUbound - plLbound + 2];
StrCpyN(szPostData, szTemp, plUbound - plLbound + 1);
szPostData[plUbound-plLbound] = '\0';
SafeArrayUnaccessData(parrTemp);
// Используем szPostData, например
// MessageBox(szPostData);
delete[] szPostData;
}