unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleCtrls, SHDocVw, StdCtrls;
type
TForm1 =
class(TForm)
Edit1: TEdit;
Button1: TButton;
WebBrowser1: TWebBrowser;
Button2: TButton;
Edit2: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function WbEnumFields(WebBrowser: TWebBrowser; SL: TStrings): Boolean;
var
i, j: Integer;
FormItem: Variant;
begin
Result := True;
//Hat das Dokument Forms? (Frames)
if WebBrowser.OleObject.Document.all.tags('
FORM').Length = 0
then
begin
Result := False;
Exit;
end;
//Bearbeite alle Frames
for I := 0
to WebBrowser.OleObject.Document.forms.Length - 1
do
begin
FormItem := WebBrowser.OleObject.Document.forms.Item(I);
// Bearbeite alle Felder eines Frames
for j := 0
to FormItem.Length - 1
do
begin
try
SL.Add(FormItem.Item(j).
Name);
except
Result := False;
Exit;
end;
end;
end;
end;
// Durchsuche alle Formulare im Webbrowser nach dem Feldnamen
// Übergabe:
// Webbroweser: Webbrowser, der die aktuelle Seite enthält
// FieldName : Name des gesuchten Felds
// Rückgabe
// Field : Field.x : Frame Nummer
// : Fielf.y : Feld Nummer im Frame
// Result : true -> Feld existiert
// : false -> Feld existiert nicht
// oder kein Dokument geladen
function WbFindField(WebBrowser: TWebBrowser; FieldName:
string;
var Field: TPoint): boolean;
var
i, j: Integer;
FormItem: Variant;
begin
Result := False;
//Hat das Dokument Forms? (Frames)
if WebBrowser.OleObject.Document.all.tags('
FORM').Length = 0
then
begin
Exit;
end;
//Bearbeite alle Frames
for I := 0
to WebBrowser.OleObject.Document.forms.Length - 1
do
begin
FormItem := WebBrowser.OleObject.Document.forms.Item(I);
// Bearbeite alle Felder eines Frames
for j := 0
to FormItem.Length - 1
do
begin
try
// Feldname wurde gefunden
// gebe ihn zurück und ende
if FormItem.Item(j).
Name = FieldName
then
begin
Field.x := i;
// Position speichern
Field.Y := j;
Result := True;
exit;
end;
except
Exit;
end;
end;
end;
end;
// Trage Text in ein Editfeld ein
// Übergabe:
// Webbroweser: Webbrowser, der die aktuelle Seite enthält
// FieldName : Name des gesuchten Felds
// Rückgabe
// Value : Der Text, der in das Feld hinein soll
// Result : true -> kein Fehler
// : false -> Feld existiert nicht
// oder kein Dokument geladen
function WbSetEditField(WebBrowser: TWebBrowser; FieldName:
string; Value:
string): Boolean;
var
Field: TPoint;
begin
// Position des Felds holen
if not WbFindField(WebBrowser, FieldName, Field)
then
begin
Result := false;
// Feld existiert nicht
exit;
// Ende
end;
try
// Feld füllen
WebBrowser.OleObject.Document.forms.Item(Field.x).Item(Field.y).Value := Value;
Result := True;
except
Result := false;
Exit;
end;
end;
// Lese Text aus einem Editfeld
// Übergabe:
// Webbroweser: Webbrowser, der die aktuelle Seite enthält
// FieldName : Name des gesuchten Felds
// Rückgabe
// Value : Text, der im Feld steht
// Result : true -> kein Fehler
// : false -> Feld existiert nicht
// oder kein Dokument geladen
function WbGetEditField(WebBrowser: TWebBrowser; FieldName:
string;
var Value:
string): Boolean;
var
Field: TPoint;
begin
// Position des Felds holen
if not WbFindField(WebBrowser, FieldName, Field)
then
begin
Result := false;
// Feld existiert nicht
exit;
// Ende
end;
try
// Feld lesen
Value := WebBrowser.OleObject.Document.forms.Item(Field.x).Item(Field.y).Value;
Result := True;
except
Result := false;
Exit;
end;
end;
// Setze eine Checkbox
// Übergabe:
// Webbroweser: Webbrowser, der die aktuelle Seite enthält
// FieldName : Name des gesuchten Felds
// Rückgabe
// Checked : Zustand
// Result : true -> kein Fehler
// : false -> Feld existiert nicht
// oder kein Dokument geladen
function WbSetCheckBoxField(WebBrowser: TWebBrowser; FieldName:
string; Checked: boolean): Boolean;
var
Field: TPoint;
begin
// Position des Felds holen
if not WbFindField(WebBrowser, FieldName, Field)
then
begin
Result := false;
// Feld existiert nicht
exit;
// Ende
end;
try
// CheckBox setzen
WebBrowser.OleObject.Document.forms.Item(Field.x).Item(Field.y).Checked := Checked;
Result := True;
except
Result := false;
Exit;
end;
end;
// Lese eine Checkbox
// Übergabe:
// Webbroweser: Webbrowser, der die aktuelle Seite enthält
// FieldName : Name des gesuchten Felds
// Rückgabe
// Checked : Zustand
// Result : true -> kein Fehler
// : false -> Feld existiert nicht
// oder kein Dokument geladen
function WbGetCheckBoxField(WebBrowser: TWebBrowser; FieldName:
string;
var Checked: boolean): Boolean;
var
Field: TPoint;
begin
// Position des Felds holen
if not WbFindField(WebBrowser, FieldName, Field)
then
begin
Result := false;
// Feld existiert nicht
exit;
// Ende
end;
try
// CheckBox setzen
Checked := WebBrowser.OleObject.Document.forms.Item(Field.x).Item(Field.y).Checked;
Result := True;
except
Result := false;
Exit;
end;
end;
// Click einen Button
// Übergabe:
// Webbroweser: Webbrowser, der die aktuelle Seite enthält
// FieldName : Name des Button
// Rückgabe
// Result : true -> kein Fehler
// : false -> Feld existiert nicht
// oder kein Dokument geladen
function WbBtnClick(WebBrowser: TWebBrowser; FieldName:
string): Boolean;
var
Field: TPoint;
begin
// Position des Felds holen
if not WbFindField(WebBrowser, FieldName, Field)
then
begin
Result := false;
// Feld existiert nicht
exit;
// Ende
end;
try
// CheckBox setzen
WebBrowser.OleObject.Document.forms.Item(Field.x).Item(Field.y).Click;
Result := True;
except
Result := false;
Exit;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
WebBrowser1.Navigate(Edit1.Text);
end;
procedure TForm1.Button2Click(Sender: TObject);
var von:
string;
s:
string;
bis:
string;
begin
WbBtnClick(WebBrowser1, '
submit');
Sleep(5);
s:=WebBrowser1.OleObject.Document.Body.InnerHtml;
von := pos('
src=', s);
bis := posex('
"', s, von + 1);
Edit2.Text := von;
end;
end.