Page 1 sur 1
Equivalent d'une instruction utilisée en delphi
Publié : ven. 27/nov./2020 0:18
par nememoris
Bonjour
Dans delphi j utilise cette instruction
Code : Tout sélectionner
Str := WebBrowser1.OleObject.Document.GetElementByID('email').value;
Elle récupère dans une variable string (str) le contenu d un champ id="email" dans une page web affichée dans un webbrowser.
Je cherche donc à faire l équivalent avec un webgadget.
Merci pour votre aide ou un tuto ou ... enfin tout ce qui pourrait de me permettre de me dépatouiller (accès au DOM et autres ) de ça car cela fait plusieurs jours que je cherche comment faire sur les forums sans ne rien trouver ...
Re: Equivalent d'une instruction utilisée en delphi
Publié : ven. 27/nov./2020 8:51
par Marc56
Bonjour,
Il n'y a pas de fonction directe, mais il suffit d'utiliser (ou même imbriquer) deux fonctions successives:
GetGadgetItemText() récupère le code source de la page.
FindString() (ou les expressions régulières) pour extraire la chaine.

On peut aussi se passer d'afficher la page et de ne charger que la source (y compris en mémoire seule) avec diverses fonctions:
HTTPRequest
HTTPRequestMemory
ReceiveHTTPFile
ReceiveHTTPMemory
(Syntaxe et exemples est dans l'aide, chapitre HTTP)

Re: Equivalent d'une instruction utilisée en delphi
Publié : ven. 27/nov./2020 9:19
par Mesa
Salut, fais une recherche google avec "Purebasic IWebBrowser2" et tu auras plein d'exemples de code.
Tu peux regarder ici aussi:
https://purebasic.developpez.com/source ... Pg_windows
Il faut la version payante de PB, car utilisation des api.
M.
Re: Equivalent d'une instruction utilisée en delphi
Publié : ven. 27/nov./2020 9:57
par nememoris
Merci pour vos réponses
J ai effectivement trouvé beaucoup de choses qui ont trait au code html de la page, comment le mettre dans un stream, le parser mais rien pour manipuler les objets de la page en "temps réel" sinon les infos liées à l aide du webgadget...
Re: Equivalent d'une instruction utilisée en delphi
Publié : ven. 27/nov./2020 10:40
par Marc56
Les objets de la page ne peuvent être manipulés. PB n'est pas un langage objet (et il n'est pas dans son objectif de le devenir). Il existe d'autres langages et aussi des outils spécialisés pour faire du pilotage HTML (ex: Chromium, AutoIt etc)
En PB on peut faire simplement ce genre de chose en dialogue direct avec la source des pages.
Exemple rapide (qui pourrait être simplifié) avec les nouvelles fonctions dédiés au webservices (PB v5.70)
Code : Tout sélectionner
URL$ = "http://127.0.0.1/test_id.html"
InitNetwork()
HttpRequest = HTTPRequestMemory(#PB_HTTP_Get, URL$)
If Not HttpRequest
Debug "La requête a échoué" : End
EndIf
Source$ = HTTPInfo(HTTPRequest, #PB_HTTP_Response)
FinishHTTP(HTTPRequest)
STX = FindString(Source$, ~"id=\"email\">")
ETX = FindString(Source$, ">")
Txt$ = Mid(Source$, STX + 11, ETX+9)
Debug Txt$
End
; <!-- Fichier de test -->
; <html>
; <body>
; <h1 id="email">hello@world.com</h1>
; </body>
; </html>

Re: Equivalent d'une instruction utilisée en delphi
Publié : ven. 27/nov./2020 12:24
par nememoris
Ok, merci.
Bon du coup ça refroidit un peu mes ardeurs...
C est dommage les exe purebasic sont tellement plus légers que ceux de delphi que j avais l intention de converti mon code pour m y initier.
Je vais passer à un autre projet car je ne manque pas d idées
Re: Equivalent d'une instruction utilisée en delphi
Publié : sam. 28/nov./2020 9:23
par Mesa
Pb a des lacunes à ce niveau mais je pense que c'est possible en utilisant la "bibliothèque" comateplus que tu trouvera ici
https://www.rsbasic.de/backups/
ou là
http://backups.rsbasic.de/COMatePLUS.zip
Elle est livrée avec des exemple dont Demo_HTMLFormSubmitButtons.pb qui peut t'interesser, il y a d'autres exemples sur les forums.
On peut aussi executer des scripts vbs avec comateplus, voir les exemples.
M.
Re: Equivalent d'une instruction utilisée en delphi
Publié : dim. 29/nov./2020 12:17
par nememoris
Je te remercie pour toute ces précisions.
Je vais aller voir cela