Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Текст или HTML-код из IE [D6, Win95/98, WinME, NT4, Win2k, WinXP]


Programist21 ©   (2002-12-22 13:30:00) 

Народ, как из Internet Explorer"a достать текст или (что ещё лучше) HTML-код в свою программу (в Memo, например)?
Очень надо. Заранее спамибо!


Programist21   (2002-12-23 13:45:00) [1]

А тогда как отловить какое окно было последним активным? :)


Opuhshii   (2002-12-23 11:27:00) [2]

С помощью IShellWindows - получите все IWebBrowser"ы,.. а уж какой был активный,.. мда,.. FindWindow.... у Window можно и текст узнать,.. а он обычно title и есть... а уж которое последнее было активным,. это брузеру не к чему,.. имхо оно вам надо,.. дык вот именно вы и делайте.. ))

"Как можно отловить, что пользователь сменил (сделал активным) другое окно IE???" точно также как если это было любое другое окно,.. необязательно IE.... ))


Programist21   (2002-12-23 11:02:00) [3]

to int64 Просто ОГРОМНЕЙШЕЕ СПАСИБО!!! Всё круто работает!

Но есть и кое что не так :(

1) Код надо выцеплять не по title, не по url и не по count, а по активному окну - то есть выцепляем то, которое последнее было активным! Как это осуществить?

2) И ещё один вопрос: Как можно отловить, что пользователь сменил (сделал активным) другое окно IE???


int64   (2002-12-22 20:41:00) [4]

uses ... SHDocVw, MSHTML, ActiveX;

...

function SaveDocToStrings(Doc: IDispatch; var AStrings: TStrings): HResult;
var
IpStream: IPersistStreamInit;
AStream: TMemoryStream;
begin
AStream := TMemoryStream.Create;
try
IpStream := doc as IPersistStreamInit;
if not Assigned(IpStream) then Result := S_FALSE else
if Succeeded(IpStream.save(TStreamadapter.Create(AStream), TRUE))
then begin
AStream.Seek(0, 0);
AStrings.LoadFromStream(AStream);
Result := S_OK;
end else Result := S_FALSE;
except
Result := S_FALSE;
end;
AStream.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
i : Integer;
sw: Ishellwindows;
wb: IWebbrowser2;
Strings: TStrings;
begin
Strings:=Memo1.Lines;
sw:= CoShellWindows.Create;
for i := 0 to SW.Count - 1 do
begin
wb:= Sw.Item(i) as IWebbrowser2;
{
В этом месте определяем конкретный IE из списка запущенных.
Можно по url или по title.
А можно и просто оставить по щёту.
}
if HTMLDocument(wb.Document).url=
" http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1040553009&n=0"
then
{if HTMLDocument(wb.Document).title=
"Мастера DELPHI | Текст или HTML-код из IE"
then}
SaveDocToStrings(wb.Document, Strings);
end;
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо