So, ich habe weiter recherchiert und bin mit Twebbrowser wohl am richtigen Weg.
Nachfolgende Codeschnipsel habe ich gefunden, die aber nicht funktionieren (ich verwende D7).
Quelle:
Link
Nachfolgende Vorgehensweise erscheint mir momentan sinnvoll:
1. Nummer der Form zu holen.
2. Alle Eingabefelder der Form holen und listen.
Delphi-Quellcode:
function GetFormByNumber(document: IHTMLDocument2;
formNumber: integer): IHTMLFormElement;
var
forms: IHTMLElementCollection;
begin
forms := document.Forms as IHTMLElementCollection;
if formNumber < forms.Length then
result := forms.Item(formNumber,'') as IHTMLFormElement
else
result := nil;
end;
function GetFormFieldNames(fromForm: IHTMLFormElement): TStringList;
var
index: integer;
field: IHTMLElement;
input: IHTMLInputElement;
select: IHTMLSelectElement;
text: IHTMLTextAreaElement;
begin
result := TStringList.Create;
for index := 0 to fromForm.length do
begin
field := fromForm.Item(index,'') as IHTMLElement;
if Assigned(field) then
begin
if field.tagName = 'INPUT' then
begin
// Input field.
input := field as IHTMLInputElement;
result.Add(input.name);
end
else if field.tagName = 'SELECT' then
begin
// Select field.
select := field as IHTMLSelectElement;
result.Add(select.name);
end
else if field.tagName = 'TEXTAREA' then
begin
// TextArea field.
text := field as IHTMLTextAreaElement;
result.Add(text.name);
end;
end;
end;
end;
//procedure TMyForm.Button1Click(Sender: TObject);
// Original geändert
procedure Form1.Button1Click(Sender: TObject);
var
document: IHTMLDocument2;
theForm: IHTMLFormElement;
index: integer;
begin
//Nachfolgend wird ein Fehler gezeigt:
// document := TWebBrowser.Document as IHTMLDocument2;
// und habe deshalb den Source abgeändert:
document := WebBrowser1.Document as IHTMLDocument2;
// und ab hier geht es bei mir nicht mehr weiter...
theForm := GetFormByNumber(WebBrowser.Document as IHTMLDocument2,0);
fields := GetFormFieldNames(theForm);
for index := 0 to fields.count-1 do
ShowMessage('Field ' + IntToStr(index) + ' called ' + fields[index]);
end;
So fehlerfrei, wie der Autor schreibt, scheint der Code für D7 nicht zu sein.
Kann jemand weiterhelfen?