Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Javascript mit delphi möglich? (https://www.delphipraxis.net/82464-javascript-mit-delphi-moeglich.html)

NightFox 13. Dez 2006 17:41


Javascript mit delphi möglich?
 
Hi, hab vor ein programm zu schreiben das eine internetseite mit dem webbrowser öffnet. Nun wollte ich es so machen dass wenn man ein button im programm anklickt, dass dann das java-script eines auf der homepage angelegten buttons startet. ist das möglich?
(bitte genauestens beschreiben ^^ bin neu bei dephi :stupid: )
mfg NightFox

shmia 13. Dez 2006 18:27

Re: Javascript mit delphi möglich?
 
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='USERNAME' then
            value2 := 'administrator'
         else if itemname='PASSWORT' then
            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 = 'CHECKBOX' then
        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;

NightFox 14. Dez 2006 14:35

Re: Javascript mit delphi möglich?
 
Danke! und wie geht das mit den buttons? also der button greift nicht auf eine url zu sondern startet wie gesagt ein java script
mfg NightFox

shmia 14. Dez 2006 15:42

Re: Javascript mit delphi möglich?
 
Um einen Button zu drücken, musst du zuerst den Typ prüfen:
Delphi-Quellcode:
if (itemtype='BUTTON') or (itemtype='SUBMIT') then
und dann den Button "anklicken":
Delphi-Quellcode:
element.Click;

NightFox 14. Dez 2006 19:03

Re: Javascript mit delphi möglich?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Glaub es ist besser wenn ich mein ziel erkläre :chat: also ich will auf meinen router zugreifen dort auf eine bestimme seite gehn (die im downloadanhang) un dort den 'reset adsl line' button anklicken.
momentan hab ich es folgendermassen gemacht:
ich logge mich per webbrowser komponente im router ein, dann kommt die gewünschte seite. nun will ich aber die webbrowser komponente vermeiden ,da dies nicht schön aussieht, und will dass das script was beim ankicken des 'reset adsl line' buttons ausgeführt wird ausgeführt wird wenn ich zB den button1 in meinem programm anklick.
@ shmia: was du mir da gespost hast geht in die richtige richtung (soweit ich das versteh) aber da muss man doch diese seite des routers irdengwie laden und wie ich das alles anstellen soll hab ich keinen plan.

Vielleicht ist ja jemand so nett und schreibt das script für mich denn für einen erfahrenen scripter ist das glaub ich kein problem :wink: wie gesagt die htm datei wo sich der button befindet ist im anhang

vielen dank! mfg NightFox


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:33 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz