Seite 1 von 1

Button drücken mit ComatePlus - Wie ?

Verfasst: 25.01.2014 23:08
von hjbremer
Schönen Guten Abend,
Habe hier eine Sammlung von Codes, um ins Eingabefeld etwas hinein zuschreiben und die Suche zu starten

Etwas Comateplus, etwas Javascript und garniert mit Purebasic. Es funktioniert aber

Wie kann ich das nur mit Comateplus machen ?

Code: Alles auswählen

XIncludeFile "comateplus.pbi"

Enumeration
   #Window
   #Webgadget
EndEnumeration

;EnableExplicit

Procedure SetHtmlElementValue(gadget, HtmlElementId.s, Value.s)
   
   Protected myCOMateObject.COMateObject
   
   myCOMateObject = COMate_WrapCOMObject(GetWindowLong_(GadgetID(gadget), #GWL_USERDATA))
   
   If myCOMateObject 
      Value = ReplaceString(Value, "'", "$0027")
      myCOMateObject\SetProperty("document\getElementById('" + HtmlElementId + "')\value='" + Value + "'")
      If COMate_GetLastErrorCode() : Debug COMate_GetLastErrorDescription() : EndIf
      myCOMateObject\Release()
   EndIf
   
EndProcedure

Procedure.i WebGadgetReturn()
   keybd_event_(#VK_RETURN,1,0,0) 
   keybd_event_(#VK_RETURN,1,#KEYEVENTF_KEYUP,0)   
EndProcedure

Procedure.i WebGadgetSilent(gadget)
   Protected browser.IWebBrowser2    
   browser = GetWindowLongPtr_(GadgetID(gadget), #GWL_USERDATA) 
   If browser: browser\put_Silent(#True): EndIf
EndProcedure

Procedure.i WebGadgetIsBusy(gadget)
   While GetGadgetAttribute(gadget, #PB_Web_Busy)
      WindowEvent() : Delay(1)
   Wend
EndProcedure


Define url$ 

OpenWindow(#Window, 0, 0, 1200, 650, "WebGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)

url$ = "http://www.ebay.de"

WebGadget(#Webgadget, 0, 0, 1200, 650, url$)
WebGadgetSilent(#Webgadget)
WebGadgetIsBusy(#Webgadget)

SetHtmlElementValue(#Webgadget, "gh-ac", "Jim Butcher")  ;Input Gadget Ebayseite

SetGadgetText(#Webgadget, "javascript:document.getElementById('gh-ac').focus();")
WebGadgetReturn()

Repeat   
   Select WaitWindowEvent()
      Case #PB_Event_CloseWindow: Break
   EndSelect
ForEver

Re: Button drücken mit ComatePlus - Wie ?

Verfasst: 09.02.2014 18:14
von Sicro
Hallo hjbremer,

um das ausgefüllte Formular abzuschicken, würde man bei Javascript diesen Befehl ausführen:

Code: Alles auswählen

document.getElementById('gh-f').submit()
Wie ich dem Befehl

Code: Alles auswählen

myCOMateObject\SetProperty("document\getElementById('" + HtmlElementId + "')\value='" + Value + "'")
entnehmen kann, ist die Syntax bei COMate sehr ähnlich der Javascript-Syntax.

Ich kenne mich mit COMate nicht aus, daher hier nur ein Pseudo-Code:

Code: Alles auswählen

myCOMateObject\Exec("document\getElementById('gh-f')\submit()")