Работа с IWebBrowser2 - периодически возвращает ошибки RPC
От: blacklist  
Дата: 16.04.11 04:55
Оценка:
Здравствуйте. Имеется некоторый код, написанный на VC2008, без использования ATL, всё в одном потоке, STA.
Сперва-наперво вызываю OleInitialize() и CoCreateInstance():

if(SUCCEEDED(OleInitialize(NULL)))
{
   hr = CoCreateInstance(CLSID_InternetExplorer, NULL, CLSCTX_SERVER, IID_IWebBrowser2, (void**)&pGlobalIE);    
        
   if(pGlobalIE && SUCCEEDED(hr))
   {
      pGlobalIE->put_Silent(VARIANT_TRUE);
            
      return TRUE;
   }    
}


Этот код проходит отлично, инстанс создается. Далее начинается самое странное. По закону Мёрфи на имеющихся в распоряжении локальных компьютерах всё работает отлично, но при отдаче на тестинг иногда возникают ошибки в одном из следующих мест (без закономерности):

hr = pGlobalIE->Navigate(bstrURL, &vEmpty, &vEmpty, &vEmpty, &vEmpty);


hr = pGlobalIE->get_Document(&pDispatch);
if(SUCCEEDED(hr))
{
   hr = pDispatch->QueryInterface(IID_IHTMLDocument2, (LPVOID*)&pDocument);
   if(SUCCEEDED(hr))
   {
      pDispatch->Release();
      return pDocument;
   }
}


hr = pDocument->get_forms(&pForms);


hr = pForms->get_length(&dwNumber);


hr = pForm->get_length(&dwNumber);


Коды ошибок — либо 0x800706be, либо 0x800706ba, либо 0x80010105, либо всё работает прекрасно. Опять же, повторюсь, безо всякой закономерности. Отлаживать на тех машинах не имею возможности (только писать лог работы программы), локально воссоздать ситуацию не могу, поэтому хотелось бы узнать, в каком направлении копать, хотя бы.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.