Page 1 sur 1

[R] _IE, écrire dans une Input protégée(?)

Posté : mar. 01 mai 2012 12:45
par blacksoul305
Salut, blacksoul305 qui vous parle !

Alors, voilà le problème. La fin du titre n'est 't'être pas clair, c'est pourquoi je vais vous expliquer tout ça correctement.

Depuis peu, je me suis intéressé aux fonctions _IE, et j'envisage de me faire un 'tit programme bien sympathique, cependant, ça coince. Le programme devra ajouter un commentaire sur un post de Facebook, et AMHA ( ;) jchd et mikell), pour éviter que l'on fasse des programmes malicieux, les InputBox ont été protégées par le procédé suivant :

Code : Tout sélectionner

$faceInputName = "add_comment_text"
$toSend = _IEGetObjByName($IE,$faceInputName)
_IEFormElementSetValue($toSend,GUICtrlRead($Edit1))
Pour les personnes qui ont un facebook, vous verrez la phrase "Rédiger un comentaire..." et que si vous n'écrivez pas, elle reste écrite, vous ne pouvez pas l'envoyer. Donc le code ne marche pas, il change juste la phrase de la soit dite protection.

Voici un morceau de code de la page, attention, l'affichage étant assez bordélique, téléchargez Notepad++ et activez la coloration syntaxique pour HTML
► Afficher le texte
Je peux comprendre que la demande semble assez tordue, à vous de juger. Je vous remercie de toute l'aide que vous pourrez m'apporter !

EDIT : Correction du code AutoIt

EDIT2 : J'ai aussi essayé avec l'ID, mais ça ne donne rien non plus... Est-ce sans espoir ?

Re: [..] _IE, écrire dans une Input protégée(?)

Posté : mar. 01 mai 2012 13:29
par mikell
Moi pas connaître fessebouc cette invention diabolique mais as-tu essayé avant le SetValue

Code : Tout sélectionner

_IEAction ($toSend, "focus")
Sinon ya ControlSend avec cet exemple pris dans l'aide pour _IEAction

Code : Tout sélectionner

#include <IE.au3>
$oIE = _IE_Example ("form")
$oSubmit = _IEGetObjByName ($oIE, "submitExample")
$hwnd = _IEPropertyGet($oIE, "hwnd")
_IEAction ($oSubmit, "focus")
ControlSend($hwnd, "", "[CLASS:Internet Explorer_Server; INSTANCE:1]", "{Enter}")
Sinon c'est qu'ya du javascript qui te bloque et là c'est mort ^^

Re: [..] _IE, écrire dans une Input protégée(?)

Posté : mar. 01 mai 2012 15:16
par blacksoul305
Oui, le focus j'y avais pensé, j'ai pourtant fait des recherches pour donner le focus sur un contrôle _IE et j'ai rien vu ! Je vais tester tout cela, je te tiens au courant. En ce qui concerne le javascript, je pense que c'est la fonction pour "envoyer" le message.

Bref, je te remercie, j'édite le poste pour te dire ce qu'il en ai !

EDIT : Ça fonctionne, sans fonctionner :lol:

Je peux commenter une première fois tranquillement, mais voilà que quand je veux re-commenter, bah ça plante :

Code : Tout sélectionner

$messageToSend = GUICtrlRead($Edit1)
$toSend = _IEGetObjByName($IE,$facebookInputName)
_IEAction($toSend,"focus")
_IEFormElementSetValue($toSend,$messageToSend)
Sleep(20)
ControlSend($myTitleWin, "", "[CLASS:Internet Explorer_Server; INSTANCE:1]", "{Enter}")
 
Erreur :
C:\Program Files\AutoIt3\Include\IE.au3 (2452) : ==> The requested action with this object has failed.:
$o_object.Focus()
$o_object.Focus()^ ERROR
EDIT2 : J'ai essayé le code suivant, ça fait comme mon problème initial, je ne rempli par l'Input mais seulement le message qui demande de rentrer un commentaire !
► Afficher le texte
Merci encore de ton aide !

Re: [..] _IE, écrire dans une Input protégée(?)

Posté : mar. 01 mai 2012 15:24
par mikell
Si ça marche 1 fois, alors ça doit remarcher
The requested action with this object has failed.:
$o_object.Focus()^ ERROR
ça veut dire qu'il n'a pas trouvé l'objet $toSend, donc ou sa définition a changé, ou c'est un chargement de page incomplet

Re: [..] _IE, écrire dans une Input protégée(?)

Posté : mar. 01 mai 2012 15:34
par blacksoul305
mikell a écrit :Si ça marche 1 fois, alors ça doit remarcher
The requested action with this object has failed.:
$o_object.Focus()^ ERROR
ça veut dire qu'il n'a pas trouvé l'objet $toSend, donc ou sa définition a changé, ou c'est un chargement de page incomplet
Mais c'est bizarre.... Oh, attends, je vais essayer de rafraîchir la page !!

J'édite pour les résultats !

EDIT : Ça marche pas, pourtant, quand je poste le second message, il me ferme le prog en m'affichant l'erreur que j'ai écrite, et quand je relance le prog à la même page, ça remarche, pour avoir le même problème au second envoie ! C'est dingue !!

EDIT2 : J'ai essayé manuellement en postant un commentaire ; afficher le code source de la page ; ré-envoyer ; ré-analyser, le seul paramètre dont je tiens compte (le nom de l'input) ne change pas du tout !

Re: [..] _IE, écrire dans une Input protégée(?)

Posté : mar. 01 mai 2012 15:38
par mikell
Tu as vérifié dans le code source de la page après le 1er message que le $faceInputName="add_comment_text" est toujours valable ?

Re: [..] _IE, écrire dans une Input protégée(?)

Posté : mar. 01 mai 2012 15:43
par blacksoul305
Oui, et il s'appelle toujours pareil (dans le code source de la page.) ...

EDIT : L'id a l'air de changer, c'est pourquoi mes différents tests ne fonctionnent pas quand j'essaye de remplir l'input avec celle-ci. Le nom de l'input ne change pas par contre : "add_comment_text" !!

Re: [..] _IE, écrire dans une Input protégée(?)

Posté : mar. 01 mai 2012 15:52
par mikell
je ne rempli pas l'Input mais seulement le message qui demande de rentrer un commentaire !
c'est ça qui est bizarre... c'est le même controle qu'il faut remplir ?
Tu peux tenter un ControlSend après avoir vérifié le focus...

Re: [..] _IE, écrire dans une Input protégée(?)

Posté : jeu. 03 mai 2012 18:23
par blacksoul305
Lis-le message du haut que j'ai édité ! On s'est marché dessus une nouvelle fois !

EDIT : Ça va être impossible je pense ...

EDIT2 : Bon, je serai absent maintenant, je peux plus faire de test, je sais plus où donne de la tête ! Merci aux gens qui se pencheront sur mon problème, merci mikell pour ton aide !

EDIT3 : Voilà où ça en est. Malgré mon temps plutôt... Comme qui dirait limité, j'ai réussi à faire marcher quelques chose sur le même type d'input dite protégée sur le site Facebook, ce sont par contre les messages privés.

Voici le code de celles-ci :

Code : Tout sélectionner

<textarea class=​"MessagingComposerBody DOMControl_placeholder" title=​"Répondre..." [color=#FF0000][u]name=​"message_body"[/u][/color] rows=​"1" placeholder=​"Répondre..." style>​Répondre...​</textarea>​
En écrivant cet édit, j'ai essayé un code et ça fonctionne pour les commentaires de post, quelque chose qui me fait super plaisir. Bref, voilà le code fonctionnel AutoIt et le code HTML concerné :

AutoIt
► Afficher le texte
HTML
► Afficher le texte
Le problème était donc un travail de recherche dont seul moi pouvait faire, j'ai mal analysé le code source de la page, merci mikell de t'être posé quelques minutes/heure sur mon problème !