Re: Помогите с перехватом POST
От: algol Россия about:blank
Дата: 30.03.06 10:33
Оценка:
Здравствуйте, 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;
    }
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.