void __fastcall TForm1::Button1Click(TObject *Sender)
{
CppWebBrowser1->Navigate(WideString("http://192.168.1.3/index.htm"));
AnsiString Source = "";
IHTMLDocument2 *htm = NULL; // #include <mshtml.h>
if(CppWebBrowser1->Document&&SUCCEEDED(CppWebBrowser1->Document->QueryInterf
ace(IID_IHTMLDocument2,
(LPVOID*)&htm)))
{
IPersistStreamInit *spPsi = NULL; // ocidl.h
if(SUCCEEDED(htm->QueryInterface(IID_IPersistStreamInit,(LPVOID*)&spPsi)) &&
spPsi)
{
IStream *spStream = NULL; // objidl.h
OleCheck(CreateStreamOnHGlobal(NULL, true, &spStream));
if(spStream)
{
__int64 nSize = 0;
STATSTG ss;
LARGE_INTEGER nMove;
nMove.QuadPart = 0;
OleCheck(spPsi->Save(spStream, true));
OleCheck(spStream->Seek(nMove,
STREAM_SEEK_SET,(ULARGE_INTEGER *)&nSize));
OleCheck(spStream->Stat(&ss, STATFLAG_NONAME));
nSize = ss.cbSize.QuadPart;
Source.SetLength(nSize);
OleCheck(spStream->Read((void *)Source.data(), nSize,(ULONG
*)&nSize));
OleCheck(spStream->Release());
}
spPsi->Release();
}
htm->Release();
}
Memo1->Lines->Text = Source;
}
Запись html-кода страницы в AnsiString
Вопрос такой: знает ли кто-нибудь, как можно записать в строку AnsiString код html-страницы, открытой в CppWebBrowser?
Цитата: Данил
Доброго времени суток!
Вопрос такой: знает ли кто-нибудь, как можно записать в строку AnsiString код html-страницы, открытой в CppWebBrowser?
Вопрос такой: знает ли кто-нибудь, как можно записать в строку AnsiString код html-страницы, открытой в CppWebBrowser?
А из потока или файла нельзя прочитать в строку? Ведь проще же.
если открыт URL, то не проще =)
Цитата: Данил
Доброго времени суток!
Вопрос такой: знает ли кто-нибудь, как можно записать в строку AnsiString код html-страницы, открытой в CppWebBrowser?
Вопрос такой: знает ли кто-нибудь, как можно записать в строку AnsiString код html-страницы, открытой в CppWebBrowser?
Код:
Sanila_san - если напишите, как из ВЕСЬ файл прочитать в строку AnsiString - буду благодарен :)
Вообще задача в том, что бы проверить, есть ли на открытой странице определённая строка.
Хм, а если в CppWebBrowser открыта страница, состоящая из фреймов, как указать, html-код какого именно файла мне нужен?
Или проще - как указать что надо в переменную Source прочитать файл с определённым URL`ом?
Цитата: Данил
Или проще - как указать что надо в переменную Source прочитать файл с определённым URL`ом?
пройтись по фреймам и выбрать с нужным URL
Цитата: Данил
Тень Пса, GIZMO - спасибо, я так понял что код примерно тот же.
это ты догадливый однака:)
Код:
IHTMLDocument2 *htm = NULL; // #include <mshtml.h>
if(CppWebBrowser1->Document&&SUCCEEDED(CppWebBrowser1->Document->QueryInterf
ace(IID_IHTMLDocument2,
(LPVOID*)&htm)))
{
IPersistStreamInit *spPsi = NULL; // ocidl.h
if(SUCCEEDED(htm->QueryInterface(IID_IPersistStreamInit,(LPVOID*)&spPsi)) &&
spPsi)
{
IStream *spStream = NULL; // objidl.h
OleCheck(CreateStreamOnHGlobal(NULL, true, &spStream));
if(spStream)
{
__int64 nSize = 0;
STATSTG ss;
LARGE_INTEGER nMove;
nMove.QuadPart = 0;
OleCheck(spPsi->Save(spStream, true));
OleCheck(spStream->Seek(nMove,
STREAM_SEEK_SET,(ULARGE_INTEGER *)&nSize));
OleCheck(spStream->Stat(&ss, STATFLAG_NONAME));
nSize = ss.cbSize.QuadPart;
Source.SetLength(nSize);
OleCheck(spStream->Read((void *)Source.data(), nSize,(ULONG
*)&nSize));
OleCheck(spStream->Release());
}
spPsi->Release();
}
htm->Release();
}
Memo1->Lines->Text = Source;
}
if(CppWebBrowser1->Document&&SUCCEEDED(CppWebBrowser1->Document->QueryInterf
ace(IID_IHTMLDocument2,
(LPVOID*)&htm)))
{
IPersistStreamInit *spPsi = NULL; // ocidl.h
if(SUCCEEDED(htm->QueryInterface(IID_IPersistStreamInit,(LPVOID*)&spPsi)) &&
spPsi)
{
IStream *spStream = NULL; // objidl.h
OleCheck(CreateStreamOnHGlobal(NULL, true, &spStream));
if(spStream)
{
__int64 nSize = 0;
STATSTG ss;
LARGE_INTEGER nMove;
nMove.QuadPart = 0;
OleCheck(spPsi->Save(spStream, true));
OleCheck(spStream->Seek(nMove,
STREAM_SEEK_SET,(ULARGE_INTEGER *)&nSize));
OleCheck(spStream->Stat(&ss, STATFLAG_NONAME));
nSize = ss.cbSize.QuadPart;
Source.SetLength(nSize);
OleCheck(spStream->Read((void *)Source.data(), nSize,(ULONG
*)&nSize));
OleCheck(spStream->Release());
}
spPsi->Release();
}
htm->Release();
}
Memo1->Lines->Text = Source;
}
изменить так, что бы он записывал в Source html-код страницы по указанному URL, а не открытой в CppWebBrowser...
можно дёргать HTML каким-нибудь компонентом... хм... типа TNMHTTP и будет он тебе записывать HTML куда угодно, хоть в файл, хоть в свойство Body
А как сказать ему что бы он записал его не в файл, а в AnsiString?)
он запишет его в Body, ну а это и есть AnsiString. я думаю оператор = знаешь... надеюсь ;)
слышал) Спасибо, работает на ура!