| Autor |
Beitrag |
jackie05
      
Beiträge: 357
|
Verfasst: 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:
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 Narses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Fr 27.11.2009 um 17:47
|
|
platzwart
      
Beiträge: 1054
Erhaltene Danke: 78
Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
|
Verfasst: 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 
      
Beiträge: 357
|
Verfasst: 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
      
Beiträge: 1331
Erhaltene Danke: 123
Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
|
Verfasst: 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 
      
Beiträge: 357
|
Verfasst: 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'))); ShowMessage('Window Handle: ' + IntToStr(wndChild)); end; end; |
Wie mache ich das ambesten?
MfG
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 28.11.09 20:03
jackie05 hat folgendes geschrieben : | | Es muss ja eine möglichkeit geben, das Textfeld mit HWND Picker herauszufinden. |
Nein
jackie05 hat folgendes geschrieben : | | 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 
      
Beiträge: 357
|
Verfasst: 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
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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.
|
|
|