Привет!
Туточки есть замечательная статья о плагинах, даже две

Всё хорошо на многое открыли мне глаза, но есть один глюк с которым я не могу справиться

Я чуток изменил исходники для достижения следующего эффекта... для эмулирование нажатия на ссылках ,кнопках и т.д. и т.п. Всё ок работает(нажатие эмулирует), вот только один ньюанс.
Ситуация 1.
Допустим я эмулирую нажатие на ссылке на странице номер 1, грузится страница номер 2. Всё оки.
Ситуация 2.
Теперь я хочу сэмулировать клиик на странице номер один, а потом на странице номер 2. Вот тут и начинаются непонятки

Эмулирую нажатие на ссылке, потом в цикле жду пока страница якобы загрузится делаю так
while(state != READYSTATE_COMPLETE )
pWebBrowser2->get_ReadyState(&state);
//или вот так, всё один хе%
while(v_bool)
pWebBrowser2->get_Busy(&v_bool);*/
быстренько прохожу эти циклы, эмулирую нажатие на странице номер два, НО!! происходит ошибка потому что я обращаюсь к элементу на странице номер 2, а она ещё оказывается не загрузилась

Почему?!?!?!
Ладно идём далее. Если после эмулирования клика на странице 1 выдать банальный MessageBox то страница быстренько загрузится. Но а как без него?!?!?! вот полный кусочек. Надеюсь понятно объяснил!
void IMyIEExtention::OnCommand(UINT nID, HWND hCtrl, UINT nCode)
{
int h[16]={41, 43, 45, 47, 49, 51};
VARIANT_BOOL v_bool=true;
READYSTATE state;
if (nID == IDC_BUTTON)
{
IServiceProviderPtr pServiceProv(m_pSomething);
//IWebBrowser2Ptr pWebBrowser2;
pServiceProv->QueryService(SID_SWebBrowserApp, IID_IWebBrowser2,(void**)&pWebBrowser2);
Click(0, "", h[0]);
LPCTSTR a="Click on first page.";
SendMessage(m_hList, LB_ADDSTRING, 0, (LPARAM)a);
while(state != READYSTATE_COMPLETE )
pWebBrowser2->get_ReadyState(&state);
while(v_bool)
pWebBrowser2->get_Busy(&v_bool);
MessageBox( NULL,"click on first page", "message", MB_OK | MB_SYSTEMMODAL);
Click(1, "submit1", 0);
}
}
void IMyIEExtention::Click(int type, char *name, int number)
{
HRESULT hRes=S_OK;
HWND hBrowser=NULL;
long l=0;
int i,y;
try
{
if(type == 0) // link
{
IDispatchPtr pDisp;
pWebBrowser2->get_Document(&pDisp);
IHTMLDocument2Ptr pHTMLDoc2(pDisp);
IHTMLElementCollectionPtr pHTMLColl;
hRes=pHTMLDoc2->get_links(&pHTMLColl);
l= (long) number;
hRes=pHTMLColl->item(_variant_t(l), _variant_t(l), &pDisp);
if (hRes == 0)
{
IHTMLElementPtr pHTMLElement(pDisp);
hRes=pHTMLElement->click();
return;
}
}
..............
..............
..............
}
catch (_com_error ce)
{
MessageBox(NULL, ce.ErrorMessage(), "error", MB_OK | MB_ICONSTOP);
return;
}
return;
}