Autor Beitrag
jackie05
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 357



BeitragVerfasst: Fr 27.11.09 18:38 
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:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1054
Erhaltene Danke: 78

Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
BeitragVerfasst: Fr 27.11.09 21:45 
Forensuche: "Webbrowser ausfüllen"

_________________
Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
jackie05 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 357



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1331
Erhaltene Danke: 123

Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 357



BeitragVerfasst: 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:
ausblenden 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:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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:
www.delphi-forum.de/viewtopic.php?p=557541
jackie05 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 357



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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.