Button drücken mit ComatePlus - Wie ?

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
hjbremer
Beiträge: 822
Registriert: 27.02.2006 22:30
Computerausstattung: von gestern
Wohnort: Neumünster

Button drücken mit ComatePlus - Wie ?

Beitrag 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
Purebasic 5.70 x86 5.72 X 64 - Windows 10

Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
Benutzeravatar
Sicro
Beiträge: 969
Registriert: 11.08.2005 19:08
Kontaktdaten:

Re: Button drücken mit ComatePlus - Wie ?

Beitrag 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()")
Bild
Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
Antworten