Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: проблема с IHTMLDocument2  (Прочитано 6823 раз)
0 Пользователей и 1 Гость смотрят эту тему.
andrei85
Гость
« : 12-08-2010 14:58 » 

Добрый день!
У меня вопрос почему hr на операции get_Document при проверки выдает E_FAIL ,что может быть, уже все перепробовал.
приложение консольное.
Код:
if (SUCCEEDED(OleInitialize(NULL)))
{
   IWebBrowser2*    pBrowser2;
   IHTMLDocument2 *pHTML = NULL;
   IDispatch* pHtmlDocDispatch = NULL;
   IHTMLElementCollection *pElement = NULL;

   CoCreateInstance(CLSID_InternetExplorer, NULL, CLSCTX_LOCAL_SERVER,
                       IID_IWebBrowser2, (void**)&pBrowser2);
   if (pBrowser2)
   {
       VARIANT vEmpty;
       VariantInit(&vEmpty);

       BSTR bstrURL = SysAllocString(L"http://microsoft.com");

       HRESULT hr = pBrowser2->Navigate(bstrURL, &vEmpty, &vEmpty, &vEmpty, &vEmpty);
       if (SUCCEEDED(hr))
       {
           pBrowser2->put_Visible(VARIANT_TRUE);
       }
       else
       {
           pBrowser2->Quit();
       }
       hr = pBrowser2->get_Document(&pHtmlDocDispatch);
       pHtmlDocDispatch->QueryInterface(IID_IHTMLDocument2,(void**)&pHTML);
Записан
zubr
Гость
« Ответ #1 : 13-08-2010 03:24 » 

Потому что у тебя документ еще не загрузился, а ты пытаешься получить на него интерфейс. Юзай IWebBrowser2::get_ReadyState для проверки состояния загрузки.
Записан
andrei85
Гость
« Ответ #2 : 13-08-2010 06:55 » 

IWebBrowser2::get_ReadyState выдает S_OK, но возможно проблема кроется в том, что у меня открывает 2 IE, и один переход по ссылке, а второй в подвешенном состоянии остается.
Записан
zubr
Гость
« Ответ #3 : 13-08-2010 09:41 » 

HRESULT IWebBrowser2::get_ReadyState(READYSTATE *plReadyState);
Надо смотреть результат выполнения - должно быть S_OK, а затем plReadyState - когда страница загружена plReadyState == READYSTATE_COMPLETE
Записан
andrei85
Гость
« Ответ #4 : 13-08-2010 10:28 » 

спс, разобрался.Дело было не в проге, а в системе, на другой машине все нормально работает!
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines