LIRE ET ECRIRE DANS UNE PAGE HTML

ToutEnMasm Messages postés 587 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 13 décembre 2022 - 11 déc. 2010 à 20:25
ToutEnMasm Messages postés 587 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 13 décembre 2022 - 18 déc. 2010 à 17:56
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/52594-lire-et-ecrire-dans-une-page-html

ToutEnMasm Messages postés 587 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 13 décembre 2022 3
18 déc. 2010 à 17:56
Içi la solution pour ajouter une option dans une boite à liste.
Ajouter une boite a liste dans le Html
Dans le texte html on doit trouver
</form>
<form name="form4">
<select name="MenuDeroulant" size="1">
</select>


</form>
La boite peut être vide au départ ou non
En procédant de la même manière que pour INPUT
;----------- code -----------------------
IHTMLElement get_tagName,addr Unebstr
.
.
invoke lstrcmpi,addr phrase,SADR("SELECT")
.if eax == 0
IHTMLWindow2 get_Option,addr ppvIHTMLOptionElementFactory
.if eax != S_OK
invoke LireEr_Com,eax
.if eax != 0 invoke MessageBox,NULL,ecx,edx,MB_OK
.endif
.else
;définir l'option
mov def_option.text.n1.n2.vt,VT_BSTR
mov def_option.text.n1.n2.n3.pbstrVal,BSTR("Une_Option")
mov def_option.value.n1.n2.vt,VT_BSTR
mov def_option.value.n1.n2.n3.pbstrVal,BSTR("1")
mov def_option.defaultselected.n1.n2.vt,VT_BOOL
mov def_option.defaultselected.n1.n2.n3.boolVal,0
mov def_option.selected.n1.n2.vt,VT_BOOL
mov def_option.selected.n1.n2.n3.boolVal,0
IHTMLOptionElementFactory create,def_option.text,def_option.value,\
def_option.defaultselected,def_option.selected,addr ppvIoptions
.if eax != S_OK
invoke LireEr_Com,eax
.if eax != 0
invoke MessageBox,NULL,ecx,SADR("IHTMLOptionElementFactory"),MB_OK
.endif
.else
IDispatch QueryInterface,addr IID_IHTMLSelectElement,addr ppvIHTMLSelectElement
.if ppvIHTMLSelectElement != 0
IHTMLSelectElement Add1,ppvIoptions,Index_New
.if eax != S_OK
invoke LireEr_Com,eax
.if eax != 0
invoke messageBox,NULL,ecx,SADR"IHTMLOptionElementFactory"),MB_OK
.endif
.endif
IHTMLSelectElement Release
.endif
.endif
IHTMLOptionElementFactory Release
Ioptions Release
ToutEnMasm Messages postés 587 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 13 décembre 2022 3
18 déc. 2010 à 14:27
Pas très bien documenté,c'est le moins qu'on puisse dire.
En ce moment ,je me casse un peu la tête sur les boites a listes.
Ajouter ou retrancher un élément dans une boite à liste.
Il semblerait que la documentation présente une erreur.
http://social.msdn.microsoft.com/forums/en-US/vcgeneral/thread/f41b1b84-5438-41ad-889f-af430a956ef5
Je vais essayer de traduire ça en masm dans mon source.
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
17 déc. 2010 à 23:16
"Represents any HTML element in an HTML document."

Ce n'est pas très bien documenté, il faudrait peut-être fouiller un peu plus sur le site msdn. Je vais essayer de voir si il serait possible de recuperer la methode post ou autres envois de formulaires.
ToutEnMasm Messages postés 587 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 13 décembre 2022 3
17 déc. 2010 à 19:41
"Serait-il possible d'obtenir les données en scannant juste les handles de la fenêtre Windows ?"
C'est a essayer.
IHTML (x interfaces) permet la gestion des évènements de la feuille Html.
La méthode est complète et non aléatoire.Voir le lien de mon premier mail pour toutes les interfaces supportées.
On peut le faire aussi avec des scripts,ce qui est peut être plus simple,au départ.
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
17 déc. 2010 à 18:27
L'interêt est dans la récuperation des données pour une petite appli locale. Le modèle DHTML est suffisant pour l'affichage mais il est impossible de faire le moindre traitement sur la base de donnée. Il existe des solutions en composant ActiveX mais je n'ai pas poussé sur la programmation de ces composants.

Serait-il possible d'obtenir les données en scannant juste les handles de la fenêtre Windows. Si oui, qu'apporte l'interface IHTMLElement ? Peut-elle avertir le programme quand les données sont modifiées ou autres trucs ?

@++
ToutEnMasm Messages postés 587 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 13 décembre 2022 3
17 déc. 2010 à 16:25
Tout dépend de ce qu'on veut et des liens qu'entretient la feuille avec internet ou autre,des protections.
Un exemple,un site propose un formulaire permettant de récupérer les données de la feuille et de les renvoyer dans un fichier central quelque part sur le réseau internet.
Sur ce genre d'application,les protections sont nombreuses,(mot de passe,rechargement, ....) et içi la simple recopie de la page ne marche pas (j'ai essayé).La modification de la page elle fonctionne.La modification de la page par programme peut faire les mêmes choses qu'une frappe manuelle (remplace souris,clavier).
La technique est simple,on lit un fichier,une base de donnée (voir un de mes sources ODBC) et on renvoie ses données dans la page HTML.On clic sur le bouton OK par programme et c'est fini.
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
17 déc. 2010 à 05:14
salut,
salut,

Obtiendrait-on le même résultat en réécrivant la feuille html et en la rechargeant dans le naviguateur ? Ce qui doit être le principe de php et permettrait de faire le boulot avec de simple fonctions de traitement de texte.

C'est beaucoup utilisé sous Linux, il y a même des distribs (style moblin) qui n'utilisent que le html/xml en interface graphique.

@++
ToutEnMasm Messages postés 587 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 13 décembre 2022 3
11 déc. 2010 à 20:25
La partie manquante lorsqu'on trouve un élément (içi INPUT)
Il existe une interface pour chaque sorte d'élément.
http://msdn.microsoft.com/en-us/library/aa219328(v=office.11).aspx

;http://msdn.microsoft.com/en-us/library/aa219328(v=office.11).aspx


IDispatch QueryInterface,addr IID_IHTMLInputTextElement,addr ppvIHTMLInputTextElement
.if ppvIHTMLInputTextElement != 0
IHTMLInputTextElement get_type,addr bstrvide
invoke UtoA,bstrvide
invoke lstrcmpi,addr buffer,SADR("text")
.if eax == 0
IHTMLInputTextElement put_value,BSTR("Reussite")
.endif
IHTMLInputTextElement Release
.endif
Rejoignez-nous