Jeg har set at der i delpi 7 (muligvis kun i enterprise) er mulighed for at blande programmeringssprog med browser-target, men jeg skal ikke kunne gøre rede for nærmere detailler da det bare var noget som jeg faldt over og tænkte var flot.Har ikke selv råd til at skaffe mig dette nye tiltag.
en metode er at du tager en webbrowser, navigere til din side, i documentcomplete kalder du fill form og til sidst submit.
function SubmitForm(WebBrowser: TWebBrowser; KnapNavn: string): Boolean; var I, J: Integer; FormItem: Variant; begin Result := False; if WebBrowser.OleObject.Document.all.tags('FORM').length = 0 then Exit; for I := 0 to WebBrowser.OleObject.Document.forms.Length - 1 do begin FormItem := WebBrowser.OleObject.Document.forms.Item(I); for J := 0 to FormItem.Length - 1 do try if FormItem.Item(J).Name = KnapNavn then begin FormItem.Item(j).Click; Result := True; end; except end; end; end;
function FillForm(WebBrowser: TWebBrowser; Fieldname: string; Value: string): Boolean; var I, J: Integer; FormItem: Variant; begin Result := False; if WebBrowser.OleObject.Document.all.tags('FORM').length = 0 then Exit; for I := 0 to WebBrowser.OleObject.Document.forms.Length - 1 do begin FormItem := WebBrowser.OleObject.Document.forms.Item(I); for J := 0 to FormItem.Length - 1 do try if FormItem.Item(J).Name = FieldName then begin FormItem.Item(j).Value := Value; Result := True; end; except end; end; end;
type T...Form = class(TForm) ... private { Private declarations } HTTP_POST : String; FContent : String; FResult : String; public { Public declarations } end;
// string encoder function HTTPTran(St : String) : String; var i : Integer; begin Result:=''; for i:=1 to length(St) do if St[i] in ['a'..'z','A'..'Z','0','1'..'9'] then Result:=Result+St[i] else if St[i]=' ' then Result:=Result+'+' else Result:=Result+'%'+IntToHex(Byte(St[i]),2); end;
procedure T...Form.ClientSocket1Write(Sender: TObject; Socket: TCustomWinSocket); begin // sender data Socket.SendText(HTTP_POST+FContent); end;
procedure T...Form.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket); begin // her modtager du resultat FResult:=FResult+Socket.ReceiveText; end;
procedure T...Form.ClientSocket1Disconnect(Sender: TObject; Socket: TCustomWinSocket); begin // du ved nu at forbindelsen er lukket, nu kan du se på fresult end;
procedure T...Form.ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); begin // undgår socket fejl ErrorCode := 0; end;
procedure T...Form.PostTheForm; begin FResult:='';
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.