-
необходимо получить код страницы открытой в IE(не загружая страницу заново,а используя уже открытую).что можете посоветовать?
-
Memo1.Text := (WebBrowser1.Document as IHtmlDocument2).body.outerText;
-
Rouse, что такое IHtmlDocument2 ? и ещё вопрос-как я понял этот код покажет код страницы загруженной в WebBrouser а не в IE?(я новичок по части программирования под интернет)
-
А, тебе с внешних браузеров, ну тогда вот так: unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
end;
var
Form1: TForm1;
implementation
uses
SHDocVw,
MSHTML;
procedure TForm1.Button1Click(Sender: TObject);
var
ShellWindow: IShellWindows;
WB: IWebbrowser2;
spDisp: IDispatch;
IDoc1: IHTMLDocument2;
k: Integer;
begin
ShellWindow := CoShellWindows.Create;
for k := 0 to ShellWindow.Count do
begin
spDisp := ShellWindow.Item(k);
if spDisp = nil then Continue;
spDisp.QueryInterface(iWebBrowser2, WB);
if WB <> nil then
begin
WB.Document.QueryInterface(IHTMLDocument2, iDoc1);
if iDoc1 <> nil then
begin
WB := ShellWindow.Item(k) as IWebbrowser2;
begin
Memo1.Lines.Add('****************************************');
Memo1.Lines.Add(WB.LocationURL);
Memo1.Lines.Add('****************************************');
Memo1.Lines.Add((WB.Document as IHTMLDocument2).body.outerHTML);
end;
end;
end;
end;
end;
end.
-
Благодарю,это то что нужно
-
> ShellWindow := CoShellWindows.Create;
а ему free не требуется?
-
> а ему free не требуется?
Интерфейсу?
-
1) под "Оперу" не работает? (у меня только из IE берёт :( 2) А есть способ не HTML, а сам текст сайта брать?
-
> под "Оперу" не работает? (у меня только из IE берёт :(
Нет и под фаерфокс тоже :)
> А есть способ не HTML, а сам текст сайта брать?
Руками делать GET запрос
-
Понятно.. А можно про "Get запрос" немного подробней?
-
-
Благодарю!
-
Как использовать вышеуказанный пример (для внешних браузеров) для определенного фрейма?
-
Вопрос все еще актуален.
-
> Rouse_ © (02.07.09 15:40) [3] > А, тебе с внешних браузеров, ну тогда вот так: > > unit Unit1; > > interface > > uses > Windows, Messages, SysUtils, Variants, Classes, Graphics, > Controls, Forms, > Dialogs, StdCtrls; > > type > TForm1 = class(TForm) > Button1: TButton; > Memo1: TMemo; > procedure Button1Click(Sender: TObject); > end; > > var > Form1: TForm1; > > implementation > > uses > SHDocVw, > MSHTML; > > {$R *.dfm} > > procedure TForm1.Button1Click(Sender: TObject); > var > ShellWindow: IShellWindows; > WB: IWebbrowser2; > spDisp: IDispatch; > IDoc1: IHTMLDocument2; > k: Integer; > begin > ShellWindow := CoShellWindows.Create; > for k := 0 to ShellWindow.Count do > begin > spDisp := ShellWindow.Item(k); > if spDisp = nil then Continue; > spDisp.QueryInterface(iWebBrowser2, WB); > if WB <> nil then > begin > WB.Document.QueryInterface(IHTMLDocument2, iDoc1); > if iDoc1 <> nil then > begin > WB := ShellWindow.Item(k) as IWebbrowser2; > begin > Memo1.Lines.Add('****************************************'); > > Memo1.Lines.Add(WB.LocationURL); > Memo1.Lines.Add('****************************************'); > > Memo1.Lines.Add((WB.Document as IHTMLDocument2). > body.outerHTML); > end; > end; > end; > end; > end; > > end.
Этот пример тянет код со всех запущеных экземляров ИЕ.
А как взять код с одного активного окна ????????????????????
-
-
> необходимо получить код страницы открытой в IE(не загружая > страницу заново,а используя уже открытую).что можете посоветовать? >
В ИЕ может быть открыто несколько вкладок, а также может быть открыто несколько браузеров, при том необязательно ИЕ
|