Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Eingabe in Webkomponente schreiben (https://www.delphipraxis.net/157044-eingabe-webkomponente-schreiben.html)

Metallicwar 26. Dez 2010 17:09

Eingabe in Webkomponente schreiben
 
Hi zusammen,
ich möchte einen Text eines Editfelds durch klicken auf einen Button, automatisch in ein Editfeld einer Webkomponente schreiben. Mit meiner procedure funktioniert das aber nicht, wenn ich allerdings den Focus auf ein Editfeld meines Formulars lege anstatt auf den TWebbrowser funktioniert es?!?!
Zum Testen habe ich dann einfach mal einen Timer eingebaut, mit dem funktionierts ...
Wieso funktionert es mit Timer aber ohne nicht?!?
Kann mir das mal jemand erklären und mir evtl. weiterhelfen ?!?

Delphi-Quellcode:
procedure TForm1.btnEinloggenClick(Sender: TObject);
var
  c: Char;
  i: Integer;
begin
  chatWb.Navigate('www.google.de');
  chatWb.SetFocus;
  if Length(edtUsername.Text)>0 then
  begin
    for I := 0 to Length(edtUsername.Text) do
    begin
      c:= edtUsername.Text[i];
      case c of
        '1'..'9':
        begin
          keybd_event(ord(c), 0, 0, 0);
          keybd_event(ord(c), 0, KEYEVENTF_KEYUP, 0)
        end;
        'A'..'Z':
        begin
          keybd_event(VK_SHIFT, 0, 0, 0);
          keybd_event(ord(c), 0, 0, 0);
          keybd_event(vk_Shift, 0, KEYEVENTF_KEYUP, 0);
          keybd_event(ord(c),0 ,KEYEVENTF_KEYUP, 0);
        end;
        'a'..'z':
        begin
          c:= UpCase(c);
          keybd_event(ord(c), 0, 0, 0);
          keybd_event(ord(c), 0, KEYEVENTF_KEYUP, 0);
        end;
      else
        begin
          keybd_event(ord(c), 0, 0, 0);
          keybd_event(ord(c), 0, KEYEVENTF_KEYUP, 0);
        end;
      end;
    end;
  end;
end;

himitsu 26. Dez 2010 18:17

AW: Eingabe in Webkomponente schreiben
 
Die Seite im Webbrowser ist wie ein Formular.

Wenn du die Tasten/Befehle an die Form sendest, dann taucht der Text doch auch nicht in einem Edit auf, oder?


Soll heißen: Entweder du legst den Fokus auf das gewünschte Edit/Eingabefeld im Webbrowser und sendest dann an das Edit,

oder du könntest dich via JavaScript an das Edit wenden (irgendwie ging das, also über eine Schnittstelle ähnlich dem JavaScript).

Metallicwar 26. Dez 2010 18:30

AW: Eingabe in Webkomponente schreiben
 
Zitat:

Wenn du die Tasten/Befehle an die Form sendest, dann taucht der Text doch auch nicht in einem Edit auf, oder?
doch, wenn ich den Focus auf ein Editfeld lege, dann taucht der text in dem Edit auf !!!! das ist ja das, was ich gerade nicht versteh -.-


Zitat:

Entweder du legst den Fokus auf das gewünschte Edit/Eingabefeld im Webbrowser
How? :)

Metallicwar 28. Dez 2010 00:33

AW: Eingabe in Webkomponente schreiben
 
kann mir den bei diesem Problem keiner weiterhelfen, ich komm einfach zu keiner Lösung ...

Metallicwar 24. Jan 2011 20:35

AW: Eingabe in Webkomponente schreiben
 
Kram ich mal wieder diesen alten Beitrag aus, bin nämlich leider noch nicht viel weiter gekommen.
Ich möchte eben einen Usernamen, passwort und channel in meinem Programm eintragen klicke den Verbinden button und er soll mir meine werte in die entsprechenden "Webfelder eintragen"
Mein Code:
Delphi-Quellcode:
procedure TfrmMain.btnEinloggenClick(Sender: TObject);
begin
  EmbeddedWB1.Navigate('http://www.mainfranken-chat.de/zumchat.htm');
  TimerEinloggen.Interval := 25000;
  TimerEinloggen.Enabled := True;
  EmbeddedWb1.SetFocus;
end;

procedure TfrmMain.btnEintretenClick(Sender: TObject);
begin
  frmChannel.Visible := True;
  frmChannel.TimerSchreiben.Enabled := True;
  frmChannel.lbxNickname.Items.Add(frmMain.edtUsername.Text);
end;

procedure TfrmMain.FormCreate(Sender: TObject);
begin
  TimerEinloggen.Enabled := False;
end;

procedure TfrmMain.TimerEinloggenTimer(Sender: TObject);
var
  c: Char;
  i: Integer;
begin
  TimerEinloggen.Enabled := False;
  // Übergabe des Usernamens
  if Length(edtUsername.Text)>0 then
  begin
    for I := 0 to Length(edtUsername.Text) do
    begin
      c:= edtUsername.Text[i];
      case c of
        '1'..'9':
        begin
          keybd_event(ord(c), 0, 0, 0);
          keybd_event(ord(c), 0, KEYEVENTF_KEYUP, 0)
        end;
        'A'..'Z':
        begin
          keybd_event(VK_SHIFT, 0, 0, 0);
          keybd_event(ord(c), 0, 0, 0);
          keybd_event(vk_Shift, 0, KEYEVENTF_KEYUP, 0);
          keybd_event(ord(c),0 ,KEYEVENTF_KEYUP, 0);
        end;
        'a'..'z':
        begin
          c:= UpCase(c);
          keybd_event(ord(c), 0, 0, 0);
          keybd_event(ord(c), 0, KEYEVENTF_KEYUP, 0);
        end;
      else
        begin
          keybd_event(ord(c), 0, 0, 0);
          keybd_event(ord(c), 0, KEYEVENTF_KEYUP, 0);
        end;
      end;
    end;
    keybd_event(VK_TAB, 0, 0, 0);
      begin
        // Übergabe des Passworts
        for I := 0 to Length(edtPasswort.Text) do
        begin
          c:= edtPasswort.Text[i];
          case c of
          '1'..'9':
          begin
            keybd_event(ord(c), 0, 0, 0);
            keybd_event(ord(c), 0, KEYEVENTF_KEYUP, 0)
          end;
          'A'..'Z':
          begin
            keybd_event(VK_SHIFT, 0, 0, 0);
            keybd_event(ord(c), 0, 0, 0);
            keybd_event(vk_Shift, 0, KEYEVENTF_KEYUP, 0);
            keybd_event(ord(c),0 ,KEYEVENTF_KEYUP, 0);
          end;
          'a'..'z':
          begin
            c:= UpCase(c);
            keybd_event(ord(c), 0, 0, 0);
            keybd_event(ord(c), 0, KEYEVENTF_KEYUP, 0);
          end;
        else
          begin
            keybd_event(ord(c), 0, 0, 0);
            keybd_event(ord(c), 0, KEYEVENTF_KEYUP, 0);
          end;
        end;
      end;
    end;
    keybd_event(VK_TAB, 0, 0, 0);
      begin
      // Übergabe des Channels
      for I := 0 to Length(edtChannel.Text) do
        begin
          c:= edtChannel.Text[i];
          case c of
          '1'..'9':
          begin
            keybd_event(ord(c), 0, 0, 0);
            keybd_event(ord(c), 0, KEYEVENTF_KEYUP, 0)
          end;
          'A'..'Z':
          begin
            keybd_event(VK_SHIFT, 0, 0, 0);
            keybd_event(ord(c), 0, 0, 0);
            keybd_event(vk_Shift, 0, KEYEVENTF_KEYUP, 0);
            keybd_event(ord(c),0 ,KEYEVENTF_KEYUP, 0);
          end;
          'a'..'z':
          begin
            c:= UpCase(c);
            keybd_event(ord(c), 0, 0, 0);
            keybd_event(ord(c), 0, KEYEVENTF_KEYUP, 0);
          end;
        else
          begin
            keybd_event(ord(c), 0, 0, 0);
            keybd_event(ord(c), 0, KEYEVENTF_KEYUP, 0);
          end;
        end;
      end;
        // "Eintreten Button" hat Focus und wird über eine Leertastendruck gedrückt
        begin
          keybd_event(VK_TAB, 0, 0, 0);
          keybd_event(VK_SPACE, 0, 0, 0);
          keybd_event(VK_SPACE, 0, KEYEVENTF_KEYUP, 0);
        end;
    end;
  end;
end;
So er trägt mir auch Werte in die Felder ein, allerdings etwas durcheinander.. am besten mal selber testen, es wird Java benötigt.

Zum Testen hab ich einfach mal 3 Editfelder auf die Form gezogen und den Focus eben auf Edit1 gesetzt. Nach 25 werden meine Werte wie gewünscht eingetragen.
Aber in der Webanwendung funktioniert's irgendwie nicht, so wie ich es mir vorstelle, jemand eine Idee?


Würde mich über Hilfe freuen, dass ich hier endlich mal weiter komme *grins*

Metallicwar 26. Jan 2011 18:47

AW: Eingabe in Webkomponente schreiben
 
hat denn keiner eine Idee?
Ich habe vll gedacht, dass es an falscher Einrückung lag, aber wieso hat es dann bei den Editfields funktioniert?
Bitte dringends um Hilfe :stupid:

rollstuhlfahrer 26. Jan 2011 18:53

AW: Eingabe in Webkomponente schreiben
 
Da hast du dir aber was tolles rausgesucht, nen Java-Chat-Applet über Knuddels.
Also zum Thema: Hast du mal geschaut, ob in den Eingabefeldern der Cursor blinkt, bevor du mit deiner Eingabe anfängst?

Bernhard

Metallicwar 26. Jan 2011 18:57

AW: Eingabe in Webkomponente schreiben
 
ja da hab ich mir was tolles rausgesucht *grins*
ja der Cursor blinkt, da hab ich auch schon drauf geachtet, aber ja der blinkt.

habe jetzte mal als Nickname: Hallo und als Passwort: test eingegeben
mein Hallo schreibt er mir in das richtige Feld hinein, allerdings hängt er noch das t von test dran und schreibt abschließend das est in das Feld des Passwortes ?!?

Phoenix 26. Jan 2011 18:59

AW: Eingabe in Webkomponente schreiben
 
Zitat:

Zitat von Knuddels - AGB
5.6 Das Verwenden von Programmen, die für den Nutzer im Chat Texte schreiben oder auf andere Weise das automatische Trennen nach langzeitigem Untätigbleiben im Chat verhindern, (sog. Bots) ist untersagt. Ebenso ist die Benutzung von Programmen, mit denen Einfluss auf die im Chat zur Verfügung gestellten Spiele oder Nutzerinformationen (Info) genommen werden kann (sog. Cheat-Programme), untersagt.

Und da das ein Verstoss gegen deren AGB bedeutet machen wir hier mal dicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:54 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