如何在本地读出WebBrowser中的链接!(50分)

Q

qhliaok

Unregistered / Unconfirmed
GUEST, unregistred user!
开发一个b/s的mis,但是想通过读取web页面的连接的信息来控制打印的信息。

如有一个联接http://localhost/print?begindate=2000-1-1&enddate=2000-2-10

我想在webBrowser控件浏览这个页面,通过点击这个联接,在本地读出这个信息,然后用
c/s方式打印。

关键点是 要获得这个url的信息。在beforeNavigator中读出,同时取消这次get
 
我也想知道
 
实际上这个url信息是可以读出的
void __fastcall TForm2::CppWebBrowser1BeforeNavigate2(TObject *Sender,
LPDISPATCH pDisp, TVariant *URL, TVariant *Flags,
TVariant *TargetFrameName, TVariant *PostData, TVariant *Headers,
TOLEBOOL *Cancel)

(C++Builder)

中的URL有这个信息。现在的问题是:如何分析这个url以获得host/scriptname/pathinfo/query等信息。
 
Question/Problem/Abstract:

How do I get the links from a HTML document?
Answer:


Here´s the easyest way to get all the links in a HTML document I found. How? Using the WebBrowser component from the Internet pallete of Delphi.

---
{ All we need here is a TWebBrowser component named
WebBrowser1, a button named Button1 to navigate and a
Button2 to get the links }

unit main;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, OleCtrls, SHDocVw, mshtml;

type
TForm1 = class(TForm)
WebBrowser1: TWebBrowser;
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
urlnavigate : OleVariant;
begin
urlnavigate := Edit1.text;
WebBrowser1.Navigate2(urlnavigate);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
Document : IHtmlDocument2;
Link : IHTMLElement;
StrLinks : string;
i : integer;

begin
Document := WebBrowser1.Document as IHTMlDocument2;

for i := 0 to Document.Links.Length - 1 do
begin
Link := Document.Links.Item(i, 0) as IHTMLElement;
StrLinks := Link.ToString + #13#10;
ShowMessage(StrLinks);
end;
end;

end.

 
代码如下:
type
TLink = record;
Url : string;
Text : string;
end;
TLinks : array of TLink;

var
Links : TLinks;
begin
NrLinks := WebBrowser1.OleObject.Document.all.tags('A').Length;
SetLength(Links, NrLinks);
for i := 0 to Pred(NrLinks) do
begin
Links.URL := WebBrowser1.OleObject.Document.all.tags('A').item(i).href;
Links.Text :=
WebBrowser.OleObject.Document.all.tags('A').item(i).innertext;
end; // for i
end;

 
qhliaok:如果你还要继续讨论请定期提前你的帖子,如果不想继续讨论请结束帖子。
请认真阅读大富翁论坛规则说明

http://www.delphibbs.com/delphibbs/rules.htm
 
多人接受答案了。
 
收藏用!
 

Similar threads

D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
742
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
顶部