Folgender Code funktioniert und ich erhalte die gewünschte Webseite, muss dazu aber
alle 3 Button anklicken
Code: Alles auswählen
EnableExplicit
Enumeration
#MAIN_WINDOW
#STATUS_BAR
#WEB_GADGET
#WEB_BUT_END
#WEB_BUT1
#WEB_BUT2
#WEB_BUT3
#DATEI_NR
EndEnumeration
#ABSTAND = 10
#BUTTONBR = 99
#BUTTONHH = 22
#INFOFELDHH = 50
Procedure PrgResize()
Protected iWindowbr.i = WindowWidth(#MAIN_WINDOW)
Protected iWindowhh.i = WindowHeight(#MAIN_WINDOW)
Protected iWbr = iWindowbr - #ABSTAND - #ABSTAND
Protected iWhh = iWindowhh - #ABSTAND - #ABSTAND - #ABSTAND - #INFOFELDHH
Protected iBze = #ABSTAND + #ABSTAND + iWhh
Protected iBsp = #ABSTAND
ResizeGadget(#WEB_GADGET, #PB_Ignore, #PB_Ignore, iWbr, iWhh)
ResizeGadget(#WEB_BUT1, iBsp, iBze, #PB_Ignore, #PB_Ignore)
iBsp + #ABSTAND + #BUTTONBR
ResizeGadget(#WEB_BUT2, iBsp, iBze, #PB_Ignore, #PB_Ignore)
iBsp + #ABSTAND + #BUTTONBR
ResizeGadget(#WEB_BUT3, iBsp, iBze, #PB_Ignore, #PB_Ignore)
ResizeGadget(#WEB_BUT_END, iWindowbr - #ABSTAND - #BUTTONBR, iBze, #PB_Ignore, #PB_Ignore)
EndProcedure
Procedure WebgadgetBusy()
;warten bis fertig geladen
While GetGadgetAttribute(#WEB_GADGET, #PB_Web_Busy)
While WindowEvent(): Delay(1) : Wend
Wend
EndProcedure
Procedure WebgadgetLoad(zUrl.s)
SetGadgetText(#WEB_GADGET, zUrl)
StatusBarText(#STATUS_BAR, 0, zUrl)
StatusBarText(#STATUS_BAR, 1, "Bitte warten")
WebgadgetBusy()
StatusBarText(#STATUS_BAR, 1,"")
DisableGadget(#WEB_BUT2,0)
EndProcedure
Procedure WebgadgetInput ( zKey.s , zText.s="" , iChecked.i=0, iFlag.i=0 )
;von Hroudtwolf: http://purebasic-lounge.com/viewtopic.php?t=5986
Protected sWebBrowser .IWebBrowser2 = GetWindowLongPtr_( GadgetID ( #web_gadget ) , #GWL_USERDATA )
Protected sDispatch .iDispatch
Protected sDocument .IHTMLDocument3
Protected sElement .IHTMLElement
Protected sInputElement .IHTMLInputElement
If Not ( sWebBrowser\get_Document( @sDispatch ) = #S_OK )
sDispatch\Release()
ProcedureReturn
EndIf
If Not ( sDispatch\QueryInterface( ? IID_IHTMLDocument3 , @sDocument ) = #S_OK )
sDocument\Release()
sDispatch\Release()
ProcedureReturn
EndIf
If Not (sDocument\getElementById( zKey , @sElement ) = #S_OK And sElement )
sDocument\Release()
sDispatch\Release()
ProcedureReturn
EndIf
If Not ( sElement\QueryInterface( ? IID_IHTMLInputElement , @sInputElement ) = #S_OK)
sElement\Release()
sDocument\Release()
sDispatch\Release()
ProcedureReturn
EndIf
;dieser kleine Teil ist von mir
If iFlag = 0
;Text übergeben
If Not (sInputElement\put_Value( zText ) = #S_OK )
sElement\Release()
sDocument\Release()
sDispatch\Release()
ProcedureReturn
EndIf
ElseIf iFlag = 1
;Checkbox/Radiobutton, wenn Radiobuttons alle die gleiche ID, nur den 1.
If Not (sInputElement\put_checked( iChecked ) = #S_OK )
sElement\Release()
sDocument\Release()
sDispatch\Release()
ProcedureReturn
EndIf
EndIf
sInputElement\Release()
sElement\Release()
sDocument\Release()
sDispatch\Release()
DataSection
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
EndProcedure
Procedure WebGadgetSubmit ( zKey.s )
;von Hroudtwolf: http://purebasic-lounge.com/viewtopic.php?t=5986
Protected sWebBrowser .IWebBrowser2 = GetWindowLongPtr_( GadgetID ( #WEB_GADGET ) , #GWL_USERDATA )
Protected sDispatch .iDispatch
Protected sDocument .IHTMLDocument3
Protected sElement .IHTMLElement
;Protected sInputElement .IHTMLInputElement
;Protected *sForm .IHTMLFormElement
If Not ( sWebBrowser\get_Document( @sDispatch ) = #S_OK )
sDispatch\Release()
ProcedureReturn
EndIf
If Not (sDispatch\QueryInterface( ? IID_IHTMLDocument3 , @sDocument ) = #S_OK )
sDocument\Release()
sDispatch\Release()
ProcedureReturn
EndIf
If Not (sDocument\getElementById( zKey , @sElement ) = #S_OK And sElement )
sDocument\Release()
sDispatch\Release()
ProcedureReturn
EndIf
sElement\click()
sElement\Release()
sDocument\Release()
sDispatch\Release()
;sWebBrowser\Refresh()
;sWebBrowser\ExecWB(21,2,0,0)
EndProcedure
Procedure Anmeldung()
Protected sKey.s = "_firstnameTextBox"
Protected sTxt.s = "Nele"
WebGadgetInput(sKey, sTxt)
sKey = "_lastnameTextBox"
sTxt = "Klein"
WebGadgetInput(sKey, sTxt)
;sKey = "_regidTextBox"
;sTxt = "178853"
;WebGadgetInput(sKey, sTxt)
StatusBarText(#STATUS_BAR, 0, "Drücken Sie den Anmeldebutton auf der Webseite")
EndProcedure
Procedure WinCB(iWnd.i,iMsg.i,iwParam.i,ilParam.i)
Protected iResult = #PB_ProcessPureBasicEvents
;
; Ihr Programmcode hier
;
ProcedureReturn iResult
EndProcedure
;---------------------------------------------------------------------------
Procedure Main()
Protected iFlag = #PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget
Protected iWnd = OpenWindow(#MAIN_WINDOW, 0, 0, 900, 600, "Hermes", iFlag)
Protected iEvent.i, iF1.i, iF2.i
Protected zText.s
CreateStatusBar(#STATUS_BAR, WindowID(#MAIN_WINDOW))
AddStatusBarField(#PB_Ignore)
AddStatusBarField(#PB_Ignore)
WebGadget(#WEB_GADGET, #ABSTAND, #ABSTAND, 0, 0, "")
ButtonGadget(#WEB_BUT_END, 0, 0, #BUTTONBR, #BUTTONHH, "Ende")
ButtonGadget(#WEB_BUT1, 0, 0, #BUTTONBR, #BUTTONHH, "1.")
ButtonGadget(#WEB_BUT2, 0, 0, #BUTTONBR, #BUTTONHH, "2.")
ButtonGadget(#WEB_BUT3, 0, 0, #BUTTONBR, #BUTTONHH, "3.")
PrgResize()
WebgadgetLoad("http://77.236.98.18/Modules/Results/Individual.aspx?Lang=de-DE")
OpenFile(#DATEI_NR,GetTemporaryDirectory()+"Text.htm")
WriteString(#DATEI_NR,GetGadgetItemText(#WEB_GADGET,#PB_Web_HtmlCode))
CloseFile(#DATEI_NR)
SetWindowCallback(@WinCB())
Repeat
iEvent = WaitWindowEvent()
Select iEvent
Case #PB_Event_SizeWindow
PrgResize()
Case #PB_Event_Gadget
Select EventGadget()
Case #WEB_BUT1:
Anmeldung()
WebGadgetSubmit ( "_submitButton" )
zText.s = GetGadgetText(#WEB_GADGET)
StatusBarText(#STATUS_BAR, 0, zText)
Case #WEB_BUT2
WebGadgetSubmit ( "_bestHyperLink" )
OpenFile(#DATEI_NR,GetTemporaryDirectory()+"Text.htm")
WriteString(#DATEI_NR,GetGadgetItemText(#WEB_GADGET,#PB_Web_HtmlCode))
CloseFile(#DATEI_NR)
zText.s = GetGadgetText(#WEB_GADGET)
StatusBarText(#STATUS_BAR, 0, zText)
Case #WEB_BUT3
OpenFile(#DATEI_NR,GetTemporaryDirectory()+"Text.htm")
WriteString(#DATEI_NR,GetGadgetItemText(#WEB_GADGET,#PB_Web_HtmlCode))
CloseFile(#DATEI_NR)
Case #WEB_BUT_END: iEvent = #PB_Event_CloseWindow
EndSelect
EndSelect
Until iEvent = #PB_Event_CloseWindow
End
EndProcedure
Main()
Hat jemand eine Idee, wie man das realisiert ?
Wenn ich
Code: Alles auswählen
Case #WEB_BUT2Code: Alles auswählen
Case #WEB_BUT3