Eingabefelder + Buttons in Frames lesen/schreiben/klicken
Verfasst: 19.12.2013 16:05
Hallo,
momentan hänge ich an einem Problem im Zusammenhang mit Auslesen / Beschreiben von Formular-Feldern und dem Klicken von Buttons in Frame-basierten HTML-Seiten.
Während z.B. das Beschreiben eines Formular-Felds über die ID auf "normalen" HTML-Seiten mit folgendem Code problemlos funktioniert (für das Auslesen und Knöpfe-Betätigen benutze ich analog aufgebaute Lösungen, die auf Code-Schnipseln beruhen, die ich hier im Forum gefunden habe),
funktioniert dies bei Frame-basierten Seiten so (logischerweise) nicht.
Ich habe allerdings im MSDN bislang noch keinen Weg gefunden, wie ich über die diversen Interfaces, Methods und Properties an die INPUT-Text und -Submit-Felder in einem bestimmten Frame herankomme.
Geht man da am besten über das "IHTMLFramesCollection2"-Interface -> Item -> frame -> getElementsByTagName, usw... oder über das "IHTMLFrameElement3"-Interface und wie geht es da jeweils weiter?
Da ich mich mit diesen COM-Geschichten noch nicht gut auskenne
, bin ich für jeden Gedankenanstoß in die richtige Richtung dankbar. Wie müßte man die Prozedur für Frames anpassen?
Viele Grüße
Markus
momentan hänge ich an einem Problem im Zusammenhang mit Auslesen / Beschreiben von Formular-Feldern und dem Klicken von Buttons in Frame-basierten HTML-Seiten.
Während z.B. das Beschreiben eines Formular-Felds über die ID auf "normalen" HTML-Seiten mit folgendem Code problemlos funktioniert (für das Auslesen und Knöpfe-Betätigen benutze ich analog aufgebaute Lösungen, die auf Code-Schnipseln beruhen, die ich hier im Forum gefunden habe),
Code: Alles auswählen
Procedure.s PutElementText (idWebGadget.i, sKey.s, text.s)
Protected WebBrowser .IWebBrowser2 = GetWindowLong_(idWebGadget, #GWL_USERDATA)
Protected Dispatch .iDispatch
Protected Document .IHTMLDocument3
Protected Element .IHTMLElement
Protected InputElement .IHTMLInputElement
Protected bstrValue .i
Protected sValue .s
If Not (WebBrowser\get_Document(@Dispatch) = #S_OK)
Dispatch\Release()
ProcedureReturn ""
EndIf
If Not (Dispatch\QueryInterface(?IID_IHTMLDocument3, @Document) = #S_OK)
Document\Release()
Dispatch\Release()
ProcedureReturn ""
EndIf
If Not (Document\getElementById(sKey, @Element) = #S_OK And Element)
Document\Release()
Dispatch\Release()
ProcedureReturn ""
EndIf
If Not (Element\QueryInterface(?IID_IHTMLInputElement, @InputElement) = #S_OK)
Element\Release()
Document\Release()
Dispatch\Release()
ProcedureReturn ""
EndIf
If Not (InputElement\put_Value(text) = #S_OK)
Element\Release()
Document\Release()
Dispatch\Release()
ProcedureReturn
EndIf
InputElement\Release()
Element\Release()
Document\Release()
Dispatch\Release()
EndProcedure
Ich habe allerdings im MSDN bislang noch keinen Weg gefunden, wie ich über die diversen Interfaces, Methods und Properties an die INPUT-Text und -Submit-Felder in einem bestimmten Frame herankomme.
Geht man da am besten über das "IHTMLFramesCollection2"-Interface -> Item -> frame -> getElementsByTagName, usw... oder über das "IHTMLFrameElement3"-Interface und wie geht es da jeweils weiter?
Da ich mich mit diesen COM-Geschichten noch nicht gut auskenne

Viele Grüße
Markus