Folgendes Problem :
Im IE ist ein Formular gegeben mit massenhaft Checkboxen.
Diese sind aber folgendermassen im QuellCode deklariert :
Code: Alles auswählen
<input type="checkbox" name="groupIDs[]" value="13" />
<input type="checkbox" name="groupIDs[]" value="29" />
Wie kann ich jetzt eine bestimmte Checkbox mit einem Haken versehen ?
Bei einer eindeutigen ID nutze ich bisher :
Code: Alles auswählen
; Ursprungs Code von "alter Mann", modifiziert von Bisonte
Enumeration
#WebInput_Button
#WebInput_Select
#WebInput_Input
#WebInput_CheckBox
EndEnumeration
Procedure.i WebGadgetInput(Gadget, Mode, ID.s, Text$ = "", Value = 0)
Protected WebBrowser .IWebBrowser2
Protected Dispatch .iDispatch
Protected Document .IHTMLDocument3
Protected Element .IHTMLElement
Protected InputElement .IHTMLInputElement
Protected SelectElement .IHTMLSelectElement
If Not IsGadget(Gadget)
If Not GadgetType(Gadget) = #PB_GadgetType_Web
ProcedureReturn #False
EndIf
EndIf
WebBrowser = GetWindowLongPtr_(GadgetID(Gadget), #GWL_USERDATA)
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( ID , @ Element ) = #S_OK And Element )
Debug "getElement Select"
Document\Release()
Dispatch\Release()
ProcedureReturn
EndIf
Select Mode
Case #WebInput_Select
If Not ( Element\QueryInterface( ? IID_IHTMLSelectElement , @ SelectElement ) = #S_OK)
Element\Release()
Document\Release()
Dispatch\Release()
ProcedureReturn #False
EndIf
If Not ( SelectElement\put_selectedIndex(Value) = #S_OK)
SelectElement\Release()
Element\Release()
Document\Release()
Dispatch\Release()
ProcedureReturn #False
EndIf
SelectElement\Release()
Case #WebInput_Button
Element\click()
Case #WebInput_Input
If Not ( Element\QueryInterface( ? IID_IHTMLInputElement , @ InputElement ) = #S_OK)
Element\Release()
Document\Release()
Dispatch\Release()
ProcedureReturn #False
EndIf
If Not ( InputElement\put_Value( text$ ) = #S_OK )
Element\Release()
Document\Release()
Dispatch\Release()
ProcedureReturn #False
EndIf
InputElement\Release()
Case #WebInput_CheckBox
If Not ( Element\QueryInterface( ? IID_IHTMLInputElement , @ InputElement ) = #S_OK)
Element\Release()
Document\Release()
Dispatch\Release()
ProcedureReturn #False
EndIf
If Not ( InputElement\put_checked( Bool(Value) ) = #S_OK )
Element\Release()
Document\Release()
Dispatch\Release()
ProcedureReturn #False
EndIf
InputElement\Release()
Default
Element\Release()
Document\Release()
Dispatch\Release()
ProcedureReturn #False
EndSelect
Element\Release()
Document\Release()
Dispatch\Release()
ProcedureReturn #True
EndProcedure
DataSection
IID_IHTMLRect: ; {3050F4A3-98B5-11CF-BB82-00AA00BDCE0B IHTMLRect}
Data.l $3050F4A3
Data.w $98B5, $11CF
Data.b $BB, $82, $00, $AA, $00, $BD, $CE, $0B
IID_IHTMLSelectElement: ; { 3050F244-98B5-11CF-BB82-00AA00BDCE0B }
Data.l $3050F244
Data.w $98B5 , $11CF
Data.b $BB , $82 , $00 , $AA , $00 , $BD , $CE , $0B
IID_IHTMLDocument3: ; { 3050F485-98B5-11CF-BB82-00AA00BDCE0B }
Data.l $3050F485
Data.w $98B5 , $11CF
Data.b $BB , $82 , $00 , $AA , $00 , $BD , $CE , $0B
IID_IHTMLInputElement: ; { 3050f5d2-98b5-11cf-bb82-00aa00bdce0b }
Data.l $3050F5D2
Data.w $98B5 , $11CF
Data.b $BB , $82 , $00 , $AA , $00 , $BD , $CE , $0B
EndDataSection
WebGadgetInput(#Webgadget, #WebInput_CheckBox, "agbZustimmung", "", 1)
Oder... wie kann ich mir alle HTML Elemente anzeigen lassen... (ID, Name etc.) ... wäre vielleicht auch hilfreich...