[Delphi:] Webbrowser => Link und Linktext ermitteln
ich
- programmiertechnik
0 uwe
tach,
wie kann man z.b. bei einem klick auf einen im webbrowser angezeigten link dessen text und link auslesen?
also wenn da steht: freemail ,
dann soll da bei nem klick drauf folgendes angezeigt werden:
text: "freemail"
link: "http://freemail.de"
wie geht das am einfachsten?
Hi
wie geht das am einfachsten?
Fuer dein "triviales" Problem gibt es eigentlich andere Anlaufstellen (wie waer's zum Beispiel mit newsgroups.borland.com ?). Ich poste trotzdem mal einen Loesungsansatz. Erwarte allerdings keine grossartigen Erklaerungen von mir.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure FindIEEditHandle;
end;
var
Form1: TForm1;
EditHandle: THandle;
implementation
{$R *.DFM}
function EnumIEChildProc(AHandle: hWnd; AnObject: TObject): BOOL; stdcall;
var
tmpS: string;
theClassName: string;
theWinText: string;
begin
Result := True;
SetLength(theClassName, 256);
GetClassName(AHandle, PChar(theClassName), 255);
SetLength(theWinText, 256);
GetWindowText(AHandle, PChar(theWinText), 255);
tmpS := StrPas(PChar(theClassName));
if theWinText <> EmptyStr then
tmpS := tmpS + '"' + StrPas(PChar(theWinText)) + '"'
else
tmpS := tmpS + '""';
if Pos('Edit', tmpS) > 0 then
begin
EditHandle := AHandle;
end;
end;
function IEWindowEnumProc(AHandle: hWnd; AnObject: TObject): BOOL; stdcall;
{callback for EnumWindows.}
var
theClassName: string;
theWinText: string;
tmpS: string;
begin
Result := True;
SetLength(theClassName, 256);
GetClassName(AHandle, PChar(theClassName), 255);
SetLength(theWinText, 256);
GetWindowText(AHandle, PChar(theWinText), 255);
tmpS := StrPas(PChar(theClassName));
if theWinText <> EmptyStr then
tmpS := tmpS + '"' + StrPas(PChar(theWinText)) + '"'
else
tmpS := tmpS + '""';
if Pos('IEFrame', tmpS) > 0 then
begin
EnumChildWindows(AHandle, @EnumIEChildProc, longInt(0));
end;
end;
procedure TForm1.FindIEEditHandle;
begin
Screen.Cursor := crHourGlass;
try
EnumWindows(@IEWindowEnumProc, LongInt(0));
finally
Screen.Cursor := crDefault;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
FindIEEditHandle;
if EditHandle > 0 then
Label1.Caption := IntToStr(EditHandle)
else
label1.Caption := 'Not Found';
end;
end.
Gruss
Uwe