Перехват событий IE без MFC и ATL
От: RIPPA  
Дата: 21.12.04 11:51
Оценка:
Задача такая: Нужно перехватывать значения из форм в IE после сабмита, но до отправки данных серверу.
Вопрос неоднократно задавался, но адекватного ответа так никто и не дал.

Использование Browser HELPER OBJECTS исключено (все можно и без них сделать).
Написать нужно на чистом API без всяких там MFC или ATL...

Уменя есть код реально работающий для MFC, кто-нить может подсказать как то-же самое можно без MFC сделать (размер программы имеет значение) ?
Текст примера:
#import "mshtml.tlb" // Internet Explorer 5
#import "shdocvw.dll"

//Следующая функция показывает, как можно подключиться к запущенному Web браузеру 
static SHDocVw::IShellWindowsPtr m_spSHWinds; 

void CIEEnumWindowsDlg::ConnectToShell() 
{
 CoInitialize(NULL);

 if(m_spSHWinds == 0) 
 {
  //
  // Получаем указатель на интерфейс ShellWindows
  //
  if(m_spSHWinds.CreateInstance(__uuidof(SHDocVw::ShellWindows)) == S_OK) 
  {
   // Каркас события 
   //
   LPCONNECTIONPOINTCONTAINER pConnPtCont;

   if ((m_spSHWinds != NULL) &&
   SUCCEEDED(m_spSHWinds->QueryInterface(IID_IConnectionPointContainer,
   (LPVOID*)&pConnPtCont)))
   {
    ASSERT(pConnPtCont != NULL);
    LPCONNECTIONPOINT pConnPt = NULL;
    DWORD dwCookie = 0;

    if (SUCCEEDED(pConnPtCont->FindConnectionPoint(
     __uuidof(SHDocVw::DShellWindowsEvents), &pConnPt)))
    {
     ASSERT(pConnPt != NULL);
     pConnPt->Advise( this->GetIDispatch(FALSE), &dwCookie);
     pConnPt->Release();
    }

    pConnPtCont->Release();
   }
  }
  else 
  {
   AfxMessageBox("Shell Windows interface is not avilable");
  }
 }
}



22.12.04 00:43: Перенесено из 'C/C++'
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.