mit folgendem Code ist das leicht möglich:
Delphi-Quellcode:
type
TOnExtractLink =
procedure(
const URL:
string)
of object;
// Extract all Links from Document
procedure ExtractDocumentLinks(Document: IDispatch; callback:TOnExtractLink);
// Extract all Links from Browser's Document
procedure ExtractWBLinks(WebBrowser: TWebBrowser; callback:TOnExtractLink);
...
procedure ExtractDocumentLinks(Document: IDispatch; callback:TOnExtractLink);
var
doc, links, link : OleVariant;
i : Integer;
begin
doc := Document;
links := doc.links;
for i:=0
to links.Length-1
do
begin
link := links.item(i);
callback(link.HREF);
end;
end;
procedure ExtractWBLinks(WebBrowser: TWebBrowser; callback:TOnExtractLink);
begin
if not Assigned(WebBrowser.Document)
then
Exit;
ExtractDocumentLinks(WebBrowser.Document, callback);
end;
Du rufst die Procedure ExtractWBLinks() auf und musst allerdings eine Calback-Methode angeben:
Delphi-Quellcode:
...
ExtractWBLinks(WebBrowser1, AddToList);
...
procedure TForm1.AddToList(
const URL:
string);
begin
// hier wäre Gelegenheit, unerwünschte oder doppelte URL auszufiltern
if copy(
URL, 1, 5) = '
http:'
then
Memo1.Lines.Add(
URL)
// hier alle http: URL rein
else
Memo2.Lines.Add(
URL);
// und hier den Rest (ftp:, mailto: ,...)
end;