Здравствуйте, Аноним, Вы писали:
А>Собственно вопрос: как вывести ХТМЛ, который лежит не в файле, а в памяти. В файл сохранять нельзя, а из памяти Navigate не работает. Что делать?
Попробуй воспользоваться этими функциями:
HRESULT IWebBrowser2::get_HWND(long *pHWND);
BOOL SetWindowText(
HWND hWnd, // handle to window or control
LPCTSTR lpString // title or text
);
А вообще-то это оффтопик.В WIN API или в COM/DCOM/ActiveX надобно.
Re: Microsoft Web Browser - вывод ХТМЛ из памяти ????
Здравствуйте, Аноним, Вы писали:
А>Собственно вопрос: как вывести ХТМЛ, который лежит не в файле, а в памяти. В файл сохранять нельзя, а из памяти Navigate не работает. Что делать?
работай как вебсервер, передавай по порту 80.
но учти, что он все равно кешировать в файл будет
Re: Microsoft Web Browser - вывод ХТМЛ из памяти ????
Здравствуйте, Аноним, Вы писали:
А>Собственно вопрос: как вывести ХТМЛ, который лежит не в файле, а в памяти. В файл сохранять нельзя, а из памяти Navigate не работает. Что делать?
Из памяти — это на сколько я понимаю из строки?
Тогда примерно так можно:
1.) Снавигировать броузер на about:balnk.
2.) В DocumentComplete сделать что-то вроде :
IHTMLDocumentPtr doc;
//где-то здесь его получаем
doc->write(str);//str - строка содержащая HTML
Re[2]: Microsoft Web Browser - вывод ХТМЛ из памяти ????
От:
Аноним
Дата:
27.08.03 06:04
Оценка:
Здравствуйте, Nikto, Вы писали:
N>Здравствуйте, Аноним, Вы писали:
А>>Собственно вопрос: как вывести ХТМЛ, который лежит не в файле, а в памяти. В файл сохранять нельзя, а из памяти Navigate не работает. Что делать?
N>Из памяти — это на сколько я понимаю из строки? N>Тогда примерно так можно: N>1.) Снавигировать броузер на about:balnk. N>2.) В DocumentComplete сделать что-то вроде : N>
N>IHTMLDocumentPtr doc;
N>//где-то здесь его получаем
doc->>write(str);//str - строка содержащая HTML
N>
А нельзя ли по подробнее?
Спасибо
Re[3]: Microsoft Web Browser - вывод ХТМЛ из памяти ????
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Nikto, Вы писали:
N>>Здравствуйте, Аноним, Вы писали:
А>>>Собственно вопрос: как вывести ХТМЛ, который лежит не в файле, а в памяти. В файл сохранять нельзя, а из памяти Navigate не работает. Что делать?
N>>Из памяти — это на сколько я понимаю из строки? N>>Тогда примерно так можно: N>>1.) Снавигировать броузер на about:balnk. N>>2.) В DocumentComplete сделать что-то вроде : N>>
N>>IHTMLDocumentPtr doc;
N>>//где-то здесь его получаем
doc->>>write(str);//str - строка содержащая HTML
N>>
А>А нельзя ли по подробнее? А>Спасибо
Задавай более конкретные вопросы, с примерами кода... Я ведь не телепат
Re: Microsoft Web Browser - вывод ХТМЛ из памяти ????
Здравствуйте, <Аноним>, Вы писали:
А>Собственно вопрос: как вывести ХТМЛ, который лежит не в файле, а в памяти. В файл сохранять нельзя, а из памяти Navigate не работает. Что делать?
Нууу. Можно скажем свой pluggable protocol написать. Для твоей задачи очень даже просто получиться.
... << RSDN@Home 1.1 beta 1 >>
Народная мудрось
всем все никому ничего(с).
Re: Microsoft Web Browser - вывод ХТМЛ из памяти ????
Здравствуйте, Аноним, Вы писали:
А>Собственно вопрос: как вывести ХТМЛ, который лежит не в файле, а в памяти. В файл сохранять нельзя, а из памяти Navigate не работает. Что делать?
Здравствуйте, Аноним, Вы писали:
N>>Задавай более конкретные вопросы, с примерами кода... Я ведь не телепат А>OK. Вот я пишу такой код А>
А>HRESULT hr;
А>// Навигируем в бланк и запрашиваем интерфейсы, m_browser - тот самы активХ, пропущеный через МФЦ :)
А>m_browser.Navigate( "about:blank", NULL, NULL, NULL, NULL );
А>IDispatch* pDisp = (IDispatch*)m_browser.GetDocument();
А>IHTMLDocument2* pDoc;
А>ASSERT( pDisp );
А>hr = pDisp->QueryInterface( UUID(IID_IHTMLDocument2), (void**)&pDoc );
А>ASSERT( pDoc );
А>SAFEARRAY safe;
А>SAFEARRAYBOUND sbound;
А>sbound.cElements = nRealSize;// Размер моего ХТМЛ
А>sbound.lLbound = 0;
А>safe.cbElements = nRealSize;
А>safe.cDims = 0;
А>safe.cLocks = 0;
А>safe.fFeatures = FADF_AUTO;
А>safe.rgsabound[0] = sbound;
А>safe.pvData = mas;// здесь находится сам ХТМЛ, считаный из файла, который нормально просматривается
А>hr = pDoc->write( &safe );// возвращает S_OK, но WebBrowser как был пустой так и осталсяА>
А>И что делать не понятно
Выделенный блок надо выполнять в событии DocumentComplete или после него...
Re[2]: Microsoft Web Browser - вывод ХТМЛ из памяти ????
От:
Аноним
Дата:
27.08.03 09:26
Оценка:
Здравствуйте, Max_Akimov, Вы писали:
M_A>Здравствуйте, Аноним, Вы писали:
А>>Собственно вопрос: как вывести ХТМЛ, который лежит не в файле, а в памяти. В файл сохранять нельзя, а из памяти Navigate не работает. Что делать?
M_A>Loading HTML content from a Stream
Взял я кусок мелкософтового кода. Теперь мне не понятно, как мне из обертки CWebBrowser2 получить интерфейс IWebBrowser2. Я сделал так
Но теперь он у меня зацикливается и когда я выхожу из DocumentComplete, он снова вызывается. В общем Windows Must Die какой-то!
Плюс еще GlobalFree( hHTMLText ); вылетает, пришлось его закоментировать.
Re[2]: Microsoft Web Browser - вывод ХТМЛ из памяти ????
От:
Аноним
Дата:
27.08.03 09:45
Оценка:
Здравствуйте, Max_Akimov, Вы писали:
M_A>Здравствуйте, Аноним, Вы писали:
А>>Собственно вопрос: как вывести ХТМЛ, который лежит не в файле, а в памяти. В файл сохранять нельзя, а из памяти Navigate не работает. Что делать?
M_A>Loading HTML content from a Stream
И еще одна проблема. Почему-то он воспринимает HTML как текст, т.е. выводит тэги как текст. Странно...
Re[6]: Microsoft Web Browser - вывод ХТМЛ из памяти ????
От:
Аноним
Дата:
27.08.03 09:50
Оценка:
Здравствуйте, Nikto, Вы писали:
N>Здравствуйте, Аноним, Вы писали:
N>>>Задавай более конкретные вопросы, с примерами кода... Я ведь не телепат А>>OK. Вот я пишу такой код А>>
А>>HRESULT hr;
А>>// Навигируем в бланк и запрашиваем интерфейсы, m_browser - тот самы активХ, пропущеный через МФЦ :)
А>>m_browser.Navigate( "about:blank", NULL, NULL, NULL, NULL );
А>>IDispatch* pDisp = (IDispatch*)m_browser.GetDocument();
А>>IHTMLDocument2* pDoc;
А>>ASSERT( pDisp );
А>>hr = pDisp->QueryInterface( UUID(IID_IHTMLDocument2), (void**)&pDoc );
А>>ASSERT( pDoc );
А>>SAFEARRAY safe;
А>>SAFEARRAYBOUND sbound;
А>>sbound.cElements = nRealSize;// Размер моего ХТМЛ
А>>sbound.lLbound = 0;
А>>safe.cbElements = nRealSize;
А>>safe.cDims = 0;
А>>safe.cLocks = 0;
А>>safe.fFeatures = FADF_AUTO;
А>>safe.rgsabound[0] = sbound;
А>>safe.pvData = mas;// здесь находится сам ХТМЛ, считаный из файла, который нормально просматривается
А>>hr = pDoc->write( &safe );// возвращает S_OK, но WebBrowser как был пустой так и осталсяА>
А>>И что делать не понятно
N>Выделенный блок надо выполнять в событии DocumentComplete или после него...
Не помогает
Re[7]: Microsoft Web Browser - вывод ХТМЛ из памяти ????
N>>Выделенный блок надо выполнять в событии DocumentComplete или после него...
А>Не помогает
Что значит не помогает? В чем конкретно проблема?
Re[8]: Microsoft Web Browser - вывод ХТМЛ из памяти ????
От:
Аноним
Дата:
27.08.03 10:12
Оценка:
Здравствуйте, Nikto, Вы писали:
N>Здравствуйте, Аноним, Вы писали:
N>>>Выделенный блок надо выполнять в событии DocumentComplete или после него...
А>>Не помогает
N>Что значит не помогает? В чем конкретно проблема?
Проблема в том, что окно браузера остается пустым.
Там дальше по дискуссии меня отослали к статье мелкософта, но при том подходе браузер мой ХТМЛ отображает как текст
Re[3]: Microsoft Web Browser - вывод ХТМЛ из памяти ????
А>Но теперь он у меня зацикливается и когда я выхожу из DocumentComplete, он снова вызывается. В общем Windows Must Die какой-то! А>Плюс еще GlobalFree( hHTMLText ); вылетает, пришлось его закоментировать.
DocumentComplete вызывается по окончанию загрузки документа. Т.е. последовательность действий примерно следующая
Делаем Navigate(About:blank) -> DocumentComplete -> в нем загружаем свой документ из стрима -> после его загрузки опять DocumentComplete. -> и т.д.
После успешной загрузки нужно выставить флаг, и больше документ не грузить.
Re[4]: Microsoft Web Browser - вывод ХТМЛ из памяти ????
От:
Аноним
Дата:
27.08.03 14:58
Оценка:
Здравствуйте, Max_Akimov, Вы писали:
M_A>Здравствуйте, Аноним, Вы писали:
А>>Взял я кусок мелкософтового кода. Теперь мне не понятно, как мне из обертки CWebBrowser2 получить интерфейс IWebBrowser2. Я сделал так А>>
А>>Но теперь он у меня зацикливается и когда я выхожу из DocumentComplete, он снова вызывается. В общем Windows Must Die какой-то! А>>Плюс еще GlobalFree( hHTMLText ); вылетает, пришлось его закоментировать.
M_A>DocumentComplete вызывается по окончанию загрузки документа. Т.е. последовательность действий примерно следующая M_A>Делаем Navigate(About:blank) -> DocumentComplete -> в нем загружаем свой документ из стрима -> после его загрузки опять DocumentComplete. -> и т.д.
M_A>После успешной загрузки нужно выставить флаг, и больше документ не грузить.
А что за флаг, если не секрет? А то я сейчас в ручную такой флаг сделал? Есть ли автоматизация флагопостановки?
Re: Microsoft Web Browser - вывод ХТМЛ из памяти ????
Здравствуйте, Аноним, Вы писали:
А>Собственно вопрос: как вывести ХТМЛ, который лежит не в файле, а в памяти. В файл сохранять нельзя, а из памяти Navigate не работает. Что делать?
В BCB Это выглядит так:
TMemoryStream *stm = new TMemoryStream();
((TBlobField *)DM->MesHtm->FieldByName("CONTAINMENT"))->SaveToStream(stm); //Поток - источник HTML
IPersistStreamInit *psi;
stm->Seek(0,0);
TStreamAdapter *sa = new TStreamAdapter(stm,soReference);
if (SUCCEEDED(NewMessage->WB->Document->QueryInterface(IID_IPersistStreamInit,(void **)&psi)))
{
psi->Load(*sa);//Собственно, загружаем из потока.
}
В VC, скорее всего, аналогично.
- Вы знаете — жаль, просто по-человечески жаль Памелу Андерсон, которая никогда не сможет сыграть на баяне...
Re: Microsoft Web Browser - вывод ХТМЛ из памяти ????
Здравствуйте, mik1, Вы писали:
А>>Собственно вопрос: как вывести ХТМЛ, который лежит не в файле, а в памяти. В файл сохранять нельзя, а из памяти Navigate не работает. Что делать?
M>Иногда не мешает читать матчасть (MSDN Magazine, собственно — за август 2003). M>Вот где по этому поводу выссказывается классик: M>http://msdn.microsoft.com/msdnmag/issues/03/08/CQA/
Проблема в том, что Outlook-овские HTML-сообщения не отображаются таким образом. Получилось только через Memory Stream. Собственно, интерфейс для этого так и предназначен, я так понимаю. )
- Вы знаете — жаль, просто по-человечески жаль Памелу Андерсон, которая никогда не сможет сыграть на баяне...
Re[3]: Microsoft Web Browser - вывод ХТМЛ из памяти ????
Здравствуйте, Saddam, Вы писали:
S>Здравствуйте, mik1, Вы писали:
А>>>Собственно вопрос: как вывести ХТМЛ, который лежит не в файле, а в памяти. В файл сохранять нельзя, а из памяти Navigate не работает. Что делать?
M>>Иногда не мешает читать матчасть (MSDN Magazine, собственно — за август 2003). M>>Вот где по этому поводу выссказывается классик: M>>http://msdn.microsoft.com/msdnmag/issues/03/08/CQA/
S>Проблема в том, что Outlook-овские HTML-сообщения не отображаются таким образом. Получилось только через Memory Stream. Собственно, интерфейс для этого так и предназначен, я так понимаю. )
Странно, конечно, но да ладно. Запомним.
Сам я вообще в VB все это дело писал. Всего 4 строчки кода, если строка с html уже подготовлена
Re[2]: Microsoft Web Browser - вывод ХТМЛ из памяти ????
От:
Аноним
Дата:
08.09.03 10:44
Оценка:
Благодарю всех за ответы. Благодаря им я разобрался... почти. Осталась одна проблема — Windows 98!
В общем пишу я так:
Под 2000-й и ХР все проходит. В 98-й винде у нас на тестовой машине стоит 4-й эксплорер. Но все проходит кроме строки с !!!!!!!!!!!!!!!!!!!!!!!!!!! Возвращает она E_UNEXPECTED. Причем, в 2000-й винде все работает даже если раскоментировать строку
hr = pPersistStreamInit->InitNew();
несмотря на то, что оно должно этот самый E_UNEXPECTED возвращать. В 98-й по любому ошибка
Кстати выше приведенный код взят с мелкософтового МСДН сайта.
Re[3]: Microsoft Web Browser - вывод ХТМЛ из памяти ????
Здравствуйте, Аноним, Вы писали:
А>[/code] А>Под 2000-й и ХР все проходит. В 98-й винде у нас на тестовой машине стоит 4-й эксплорер. Но все проходит кроме строки с !!!!!!!!!!!!!!!!!!!!!!!!!!! Возвращает она E_UNEXPECTED. Причем, в 2000-й винде все работает даже если раскоментировать строку А>hr = pPersistStreamInit->InitNew(); А>несмотря на то, что оно должно этот самый E_UNEXPECTED возвращать. В 98-й по любому ошибка А>Кстати выше приведенный код взят с мелкософтового МСДН сайта.
В BCB надо передавать не указатель на поток, а поток. Может поможет?
hr = pPersistStreamInit->Load( *pStream );
- Вы знаете — жаль, просто по-человечески жаль Памелу Андерсон, которая никогда не сможет сыграть на баяне...
Re[4]: Microsoft Web Browser - вывод ХТМЛ из памяти ????
От:
Аноним
Дата:
08.09.03 11:56
Оценка:
Здравствуйте, Saddam, Вы писали:
S>Здравствуйте, Аноним, Вы писали:
А>>[/code] А>>Под 2000-й и ХР все проходит. В 98-й винде у нас на тестовой машине стоит 4-й эксплорер. Но все проходит кроме строки с !!!!!!!!!!!!!!!!!!!!!!!!!!! Возвращает она E_UNEXPECTED. Причем, в 2000-й винде все работает даже если раскоментировать строку А>>hr = pPersistStreamInit->InitNew(); А>>несмотря на то, что оно должно этот самый E_UNEXPECTED возвращать. В 98-й по любому ошибка А>>Кстати выше приведенный код взят с мелкософтового МСДН сайта. S>В BCB надо передавать не указатель на поток, а поток. Может поможет?
S>
S>hr = pPersistStreamInit->Load( *pStream );
S>
Нет, товарищ, ты что-то путаешь. Этот метод объявлен так
STDMETHOD(Load)( LPSTREAM pStm );
А если написать так как ты написал, то компилятор пишет
error C2664: 'IPersistStreamInit::Load' : cannot convert parameter 1 from 'IStream' to 'LPSTREAM'
Re[5]: Microsoft Web Browser - вывод ХТМЛ из памяти ????
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Saddam, Вы писали:
S>>Здравствуйте, Аноним, Вы писали:
А>>>[/code] А>>>Под 2000-й и ХР все проходит. В 98-й винде у нас на тестовой машине стоит 4-й эксплорер. Но все проходит кроме строки с !!!!!!!!!!!!!!!!!!!!!!!!!!! Возвращает она E_UNEXPECTED. Причем, в 2000-й винде все работает даже если раскоментировать строку А>>>hr = pPersistStreamInit->InitNew(); А>>>несмотря на то, что оно должно этот самый E_UNEXPECTED возвращать. В 98-й по любому ошибка А>>>Кстати выше приведенный код взят с мелкософтового МСДН сайта. S>>В BCB надо передавать не указатель на поток, а поток. Может поможет?
S>>
S>>hr = pPersistStreamInit->Load( *pStream );
S>>
А>Нет, товарищ, ты что-то путаешь. Этот метод объявлен так А>
А>STDMETHOD(Load)( LPSTREAM pStm );
А>
А>А если написать так как ты написал, то компилятор пишет
А>error C2664: 'IPersistStreamInit::Load' : cannot convert parameter 1 from 'IStream' to 'LPSTREAM'
Значит враперы в VC и BCB реализованы по-разному
Попробуй на 98-ю поставить 5-й эксплорер.
- Вы знаете — жаль, просто по-человечески жаль Памелу Андерсон, которая никогда не сможет сыграть на баяне...
Re[6]: Microsoft Web Browser - вывод ХТМЛ из памяти ????
От:
Аноним
Дата:
08.09.03 13:27
Оценка:
А>>error C2664: 'IPersistStreamInit::Load' : cannot convert parameter 1 from 'IStream' to 'LPSTREAM' S>Значит враперы в VC и BCB реализованы по-разному S>Попробуй на 98-ю поставить 5-й эксплорер.
Я думаю 6-й сразу ставить. Ты мне скажи, его можно поставить так, чтобы юзер не видел сам процесс установки?
Re[7]: Microsoft Web Browser - вывод ХТМЛ из памяти ????
Здравствуйте, Аноним, Вы писали:
А>>>error C2664: 'IPersistStreamInit::Load' : cannot convert parameter 1 from 'IStream' to 'LPSTREAM' S>>Значит враперы в VC и BCB реализованы по-разному S>>Попробуй на 98-ю поставить 5-й эксплорер.
А>Я думаю 6-й сразу ставить. Ты мне скажи, его можно поставить так, чтобы юзер не видел сам процесс установки?
Попытаться интегрировать в инсталяху 98
В твою инсталяху — попытаться каким-нить тракером отследить, что ставит MSIE.
А вообще — обычно таки вещи пишутся в требованиях. Типа, нуна для моей софтины тока 98-я с 6-м експлорером, и хоть ты тресни!
- Вы знаете — жаль, просто по-человечески жаль Памелу Андерсон, которая никогда не сможет сыграть на баяне...
Re: Microsoft Web Browser - вывод ХТМЛ из памяти ????
Здравствуйте, Аноним, Вы писали:
А>Собственно вопрос: как вывести ХТМЛ, который лежит не в файле, а в памяти. В файл сохранять нельзя, а из памяти Navigate не работает. Что делать?
... Я тут читал все нитки по теме и, понял, что полемика по оной ушла далеко от ответа. Суть проблемы не столь уж сложна. У меня тоже была такая проблема и, я накрапал кое какой тестовый код.
Здравствуйте, eugene32, Вы писали:
E>... Я тут читал все нитки по теме и, понял, что полемика по оной ушла далеко от ответа. Суть проблемы не столь уж сложна. У меня тоже была такая проблема и, я накрапал кое какой тестовый код.
Аналогичный код работает
- Вы знаете — жаль, просто по-человечески жаль Памелу Андерсон, которая никогда не сможет сыграть на баяне...
Re[3]: Microsoft Web Browser - вывод ХТМЛ из памяти ????
От:
Аноним
Дата:
09.09.03 06:59
Оценка:
Здравствуйте, Saddam, Вы писали:
S>Здравствуйте, eugene32, Вы писали:
E>>... Я тут читал все нитки по теме и, понял, что полемика по оной ушла далеко от ответа. Суть проблемы не столь уж сложна. У меня тоже была такая проблема и, я накрапал кое какой тестовый код. S> S>Аналогичный код работает
на BCB. S>Лениво было пробовать на VC.
Да оно у меня уже давно работает под 2000-й виндой. Зато по 98-й на 4-м эксплорере нет! И хоть ты тресни
Под виндовс-линолиум с 5-м эксплорером тож работает. В общем чую я попал, прийдется либо убеждать начальство тягать эксплорер за собой либо переколбасивать весь проект
Re[4]: Microsoft Web Browser - вывод ХТМЛ из памяти ????
Здравствуйте, Аноним, Вы писали:
E>>>... Я тут читал все нитки по теме и, понял, что полемика по оной ушла далеко от ответа. Суть проблемы не столь уж сложна. У меня тоже была такая проблема и, я накрапал кое какой тестовый код. S>> S>>Аналогичный код работает
на BCB. S>>Лениво было пробовать на VC. А>Да оно у меня уже давно работает под 2000-й виндой. Зато по 98-й на 4-м эксплорере нет! И хоть ты тресни А>Под виндовс-линолиум с 5-м эксплорером тож работает. В общем чую я попал, прийдется либо убеждать начальство тягать эксплорер за собой либо переколбасивать весь проект
Сдается мне, что в MSIE 4 такого интерфейса нет . Так, что тут ничего не попишешь.
- Вы знаете — жаль, просто по-человечески жаль Памелу Андерсон, которая никогда не сможет сыграть на баяне...