Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: Javascript mit delphi möglich?

  Alt 13. Dez 2006, 18:27
Folgendes ist programiertechnisch über TWebBrowser möglich:
* einen Button auf der Webseite anklicken
* Eingabefelder mit Text befüllen
* Checkboxen an- oder abkreuzen
* Comboboxen auswählen
Nicht möglich ist z.B. ein Dateiupload durch Vorgabe eines Dateinamens. (aus Sicherheitsgründen)

Hier kommt mal ein grosses Stück Code, das zeigt wie man Editboxen in Webseiten mit TEXT befüllt.
Du musst aber schon selber etwas mitdenken und Forschungsarbeit betreiben.
Delphi-Quellcode:
function TFrmHTMLUpload.FillForm(WebBrowser: TWebBrowser; submit:Boolean) : Boolean;
var
  i,j:Integer;
  FormItem, Element : OleVariant;
  document : OleVariant;

  itemtype, itemname : string;
  r, maxlen, selcount, postcount : Integer;

  value2 : string;
begin

   document := WebBrowser.OleObject.document;

   //no form on document
   If document.all.tags('FORM').length=0 then
   begin
    exit;
   end;

   postcount := 0;

   //count forms on document
   for I:=0 to document.forms.Length -1 do
   begin
      Result:=false;
      FormItem := document.forms.Item(I);
      For j:= 0 to FormItem.Length-1 do
      begin
         Element := FormItem.Item(j);
         itemname := Element.Name;

         itemtype := UpperCase(Element.Type);

         value2 := '';
         
         if itemname='USERNAMEthen
            value2 := 'administrator'
         else if itemname='PASSWORTthen
            value2 := 'geheim';


        if value2 <> 'then
        begin
         if (itemtype = 'TEXT') then
         begin
            maxlen := Element.MaxLength;
            Element.Value:= Copy(value2, 1, maxlen);
         end else if (itemtype = 'RADIO') then
         begin
            Element.Checked := Copy(value2, 1, 1) = '*';
         end
         else
            Element.value := value2;
         Inc(postcount);
        end;

        if (itemtype = 'SELECT-ONE') and (value2 = '') then
        begin
           // TODO: check options.count

           selcount := Element.options.Length;
           Element.value := Element.options.Item(system.Random(selcount)).value;
        end
        else if itemtype = 'CHECKBOXthen
        begin
           if system.Random > 0.5 then
              Element.Checked := True;
        end;


      end;

      if (not submit) and (postcount > 0) then
         Exit;

      if submit and (postcount > 0) then
      begin
         SubmitWebForm(FormItem);
         Exit;
      end;
   end;
end;
Andreas
  Mit Zitat antworten Zitat