Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с IHTMLDocument2, IHTMLDocument2.open 
:(
    Опции темы
Mephisto
Дата 11.7.2007, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: нет
Всего: 34



Код

bool ParseStream(CString AFileName){
    CComPtr<IHTMLDocument2> pDoc = 0;
    VARIANT  *pv_content;
    CComBSTR bCode;
    CoInitialize(0);

    if (FAILED(pDoc.CoCreateInstance(CLSID_HTMLDocument))) return false;

    /*SAFEARRAY *psa = SafeArrayCreateVector(VT_VARIANT, 0, 1);
    if (!psa) return false;

    if (SafeArrayAccessData(psa, (void**)&pv_content)) return false;

    bCode = L"<html><title>Test</title><body></body></html>";
    pv_content->vt = VT_BSTR;
    pv_content->bstrVal = bCode;
    SafeArrayUnaccessData(psa);

    if (pDoc->write(psa) != S_OK) return false;*/


    VARIANT t1, t2, t3;
    CComPtr<IDispatch> p_disp = 0;
    t1.vt = VT_BSTR;
    t1.bstrVal = BSTR("_blank");
    t2.vt = VT_BSTR;
    t2.bstrVal = BSTR("");
    t3.vt = VT_BOOL;
    t3.boolVal = true;
    if (FAILED(pDoc->open(BSTR(AFileName.GetString()), t1, t2, t3, &p_disp))) return false;

    BSTR outB;
    if (FAILED(pDoc->get_title(&outB))) return false;
    
    
    //SafeArrayDestroy(psa);
    pDoc->close();
    pDoc->write(0);
    return true;
};

Вот, есть такая функция. На вход передаю CString("file:///D:/test.htm")
Выдает Access Violation. Что делаю не так?
PM   Вверх
_hunter
Дата 11.7.2007, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 2
Всего: 98



а где, хоть, выдает то?..


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Mephisto
Дата 11.7.2007, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: нет
Всего: 34



Код

pDoc->open(BSTR(AFileName.GetString()), t1, t2, t3, &p_disp)

PM   Вверх
_hunter
Дата 11.7.2007, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 2
Всего: 98



попробуй память под строку выделить:
BSTR fileName = SysAllocString((AFileName.GetString())
если не поможет -- грузи документ из потока:
http://www.codeproject.com/useritems/HTMLParse.asp

Добавлено через 51 секунду
кстати: это не в отдельном потоке случайно происходит?


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Mephisto
Дата 11.7.2007, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: нет
Всего: 34



Цитата(_hunter @  11.7.2007,  13:30 Найти цитируемый пост)
кстати: это не в отдельном потоке случайно происходит? 

Нет, все в одном.

Добавлено через 11 минут и 3 секунды
Цитата(_hunter @  11.7.2007,  13:30 Найти цитируемый пост)
BSTR fileName = SysAllocString((AFileName.GetString())
если не поможет -- грузи документ из потока:

Цитата

'SysAllocString' : cannot convert parameter 1 from 'const char *' to 'const OLECHAR *'


Добавлено через 11 минут и 50 секунд
А из потока вот так нормально грузицца:
Код

    AFEARRAY *psa = SafeArrayCreateVector(VT_VARIANT, 0, 1);
    if (!psa) return false;
    if (SafeArrayAccessData(psa, (void**)&pv_content)) return false;
    bCode = L"<html><title>Test</title><body></body></html>";
    pv_content->vt = VT_BSTR;
    pv_content->bstrVal = bCode;
    SafeArrayUnaccessData(psa);
    if (pDoc->write(psa) != S_OK) return false;

PM   Вверх
lemax
Дата 20.5.2008, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 90
Регистрация: 14.10.2007

Репутация: нет
Всего: 1



Цитата(Mephisto @  11.7.2007,  12:36 Найти цитируемый пост)
'SysAllocString' : cannot convert parameter 1 from 'const char *' to 'const OLECHAR *'


SysAllocString (L"шоб не выдавало ашипок")

Это (L)  компилятору говорит делать строку по 2 байта на каждую букву (а не одну)
ПиСи Возможно ошибаюсь
PM MAIL   Вверх
Rififi
Дата 20.5.2008, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1254
Регистрация: 9.3.2008

Репутация: 1
Всего: 36



Mephisto, 
не надо использовать "голые" типы данных, если нет понимания, как они устроены
вместо VARIANT => CComVariant
вместо BSTR => CComBSTR
вместо SAFEARRAY => CComSafeArray<>
PM MAIL   Вверх
qweqwe
Дата 3.5.2010, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 31.1.2007

Репутация: нет
Всего: 0



Цитата

CoCreateInstance(CLSID_HTMLDocument)

Подскажите пожалуйста нубу, где взять CLSID_HTMLDocument. Компилятор выдает ошибку "CLSID_HTMLDocument was not declared in this scope". Я сделал поиск по всем заголовочным файлам, которые имеются, она нигде не определена. Так откуда же ее взять?
PM MAIL   Вверх
W4FhLF
Дата 4.5.2010, 08:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: нет
Всего: 121



qweqwe, из реестра. HKEY_CLASSES_ROOT\CLSID\

Добавлено через 2 минуты и 31 секунду
Код

CLSIDFromProgID("IHTMLDocument");



--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: COM/DCOM/ActiveX/ATL/CORBA | Следующая тема »


 




[ Время генерации скрипта: 0.0569 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.