Entwickler-Ecke

Internet / Netzwerk - Internet Explorer Textfeld füllen?


jackie05 - Fr 27.11.09 18:38
Titel: Internet Explorer Textfeld füllen?
Hallo,
ich habe versucht mit WinSpy das Textfeld von einer Internet Seite herauszufinden, leider gibt er mir nur die Frame zurück.
Also die Textfelder kann ich irgendwie nicht erkennen lassen.

Das ist dabei raus gekommen:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
var
  wndMain, wndChild: HWND;
begin
  wndMain := FindWindow('IEFrame','Test Seite - Windows Internet Explorer');
  if wndMain <> 0 then
  begin
    wndChild := FindWindowEx(wndMain, 0'TabWindowClass'nil);
    wndChild := FindWindowEx(wndChild, 0'Shell DocObject View'nil);
    wndChild := FindWindowEx(wndChild, 0'Internet Explorer_Server'nil);
    if wndChild <> 0 then
    begin
      SendMessage(wndChild, WM_SETTEXT, 0, Integer(PChar('Test')));
    end;
  end;


SendMessage habe ich hinzugefügt und möchte gerne ein Textfeld ausfüllen lassen, nur wie kann ich die Textfelder im Internet Explorer herausfinden?

Danke schonmal für die Hilfe.

MfG


Moderiert von user profile iconNarses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Fr 27.11.2009 um 17:47


platzwart - Fr 27.11.09 21:45

Forensuche: "Webbrowser ausfüllen"


jackie05 - Fr 27.11.09 21:50

Danke Dir.

Ich möchte es aber extern von meinem Programm aus im Internet Explorer ein Textfeld ausfüllen lassen.

Wie könnte ich das machen?

MfG


FinnO - Sa 28.11.09 11:08

wenn du dich irgendwie irgendwo über dein Programm einloggen möchtest, kannst du das auch via idhttp.post machen und der Website die Daten direkt unterjubeln.

Halt die Forensuche betätigen.


jackie05 - Sa 28.11.09 17:09

Wie das funktioniert, weiss ich, aber ich habe was anderes vor und deshalb kann ich Indy nicht verwenden, trotzdem Danke.

Es muss ja eine möglichkeit geben, das Textfeld mit HWND Picker herauszufinden.
Irgendwie sind die Komponente, die auf IFrame sind, geschützt und nicht auslesbar.

Edit: Mal angenommen, ich erstelle jetzt eine index.html, die nur ein Textfeld beinhaltet:

Quelltext
1:
<input type="text" name="Name">                    


Wie sähe dann der Quellcode aus, um über mein Programm dann das Textfeld auszufüllen?
Ich habe das mal so versucht:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
var
  wndMain, wndChild: HWND;
begin
  wndMain := FindWindow('IEFrame','C:\Dokumente und Einstellungen\Internet\Desktop\index.html - Windows Internet Explorer');
  if wndMain <> 0 then
  begin
    wndChild := FindWindowEx(wndMain, 0'TabWindowClass'nil);
    wndChild := FindWindowEx(wndChild, 0'Shell DocObject View'nil);
    wndChild := FindWindowEx(wndChild, 0'Internet Explorer_Server'nil);
    wndChild := FindWindowEx(wndChild, 0'text'nil);
    if wndChild <> 0 then
    begin
      SendMessage(wndChild, WM_SETTEXT, 0, Integer(PChar('Test'))); //Textfeld soll gefüllt werden
      ShowMessage('Window Handle: ' + IntToStr(wndChild));
    end;
  end;


Wie mache ich das ambesten?

MfG


jaenicke - Sa 28.11.09 20:03

user profile iconjackie05 hat folgendes geschrieben Zum zitierten Posting springen:
Es muss ja eine möglichkeit geben, das Textfeld mit HWND Picker herauszufinden.
Nein

user profile iconjackie05 hat folgendes geschrieben Zum zitierten Posting springen:
Irgendwie sind die Komponente, die auf IFrame sind, geschützt und nicht auslesbar.
Die sind nicht geschützt, es sind schlicht keine Komponenten. Wie auch bei einem Formular mit vielen Komponenten wäre das viel zu ineffizient und langsam, zudem würde es kaum korrekt umsetzbar sein was das Design und die damit verbundenen Gestaltungsmöglichkeiten z.B. via CSS angeht.

Das wird ganz einfach selbst gezeichnet. Du kannst ja auch bei meinem Periodensystem z.B. keine Komponenten finden bis auf oben in der Toolbar:
http://www.delphi-forum.de/viewtopic.php?p=557541


jackie05 - Mo 30.11.09 01:19

Danke Dir.

Gibt es also keine möglichkeit ein Textfeld im Internet Explorer ausfüllen zu lassen, über mein Delphi Programm?

MfG


jaenicke - Mo 30.11.09 07:18

Von außen? Nicht sinnvoll, da du nicht direkt weißt, ob gesendete Buchstaben an der richtigen Stelle landen.

Gehen tut es z.B. über ein Plugin im IE. Ob das in deinem Fall möglich ist, müsstest du dir überlegen. Ein Plugin hat natürlich direkten Zugriff auf die Funktionen und Ereignisse des Browsers.