Page 1 sur 2
[..] Module FF.au3
Posté : ven. 08 août 2014 12:04
par lokomass
Bonjour,
J'essaye de créer un petit script qui :
- vérifie la présence d'un fichier texte au lancement du PC (si il n'existe pas, il ne fera rien)
- si il existe, il ouvre le fichier
- le lit ligne par ligne (il contient des urls)
- les ouvrent chacune dans un onglet de firefox
- attends qu'elles aient fini de se charger
- les referment en suivant
- supprime le fichier texte
- éteint l'ordinateur
Le souci se situe ici : attends qu'elles aient fini de se charger
J'ai trouvé sur le net un module qui contiendrait des fonctions très intéressantes pour FF.
Le souci c'est qu'à mon premier test, ça plante :
Code : Tout sélectionner
If _FFConnect(Default, Default, 3000) Then
_FFOpenURL($ligne)
Else
MsgBox(16, "Erreur", "Erreur de connexion à Firefox")
EndIf
J'ai la fameuse erreur de connexion à FF.
Il est pourtant bien installé, et je suis en x64.
J'ai aussi mis le module FF.au3 dans le répertoire include d'AutoIT.
Qu'ai-je fait de mal ?
Merci
Re: [..] Module FF.au3
Posté : ven. 08 août 2014 12:54
par timmalos
Avez vous regarder le tutoriel Firefox dispo sur ce forum?
Il faut que le module MozRepl soit installé pour que l'UDF fonctionne.
Cependant, vu vos besoins, avez vous réellement besoin d'utiliser FF?
Un simple IE en background serait deja beaucoup plus stable si vous comptez utiliser ce script sur différents PC, et un simple InetGet me semble beaucoup plus approprié !
Cette fonction vous retournera le texte de l'URL, donc (c'est induit) attendra que la page ait fini de charger selon vos termes. Tout dépend de vos besoins finaux.
Re: [..] Module FF.au3
Posté : ven. 08 août 2014 14:51
par lokomass
Merci pour votre réponse, je ne sais pas si InetGet fonctionnerait, ma page renvoi du texte mais utilise du javascript & php.
J'ai testé avec google comme adresse et rien ne se passe :
Mon fichier txt
Code : Tout sélectionner
http://www.google.fr
http://www.yahoo.fr
http://www.leboncoin.fr
Code : Tout sélectionner
$fichier = FileOpen("toto.txt", 0)
If $fichier = -1 Then
MsgBox(16, "Erreur", "Impossible d'ouvrir le fichier")
Exit
EndIf
While 1
$ligne = FileReadLine($fichier)
If @error = -1 Then ExitLoop
InetGet($ligne, "t.txt")
Wend
EDIT : En fait je comprend, le InetGet va me renvoyer ma page php, mais pas le résultat de son exécution, et c'est ce que je veux moi.
Du coup existe t-il une méthode pour renvoyer le résultat de l’exécution d'une page php ?
Re: [..] Module FF.au3
Posté : ven. 08 août 2014 15:22
par timmalos
InetGet va bien renvoyer le résultat de la page PHP et non le script PHP (et heureusement).
Par contre si en effet vous avez du Javascript qui va calculer et afficher la page, alors il faudra passer par du FF ou IE.
Re: [..] Module FF.au3
Posté : ven. 08 août 2014 15:34
par lokomass
Merci pour la réponse.
J'ai quasiment réussi. Je n'arrive juste pas à ouvrir une page firefox, si ce dernier n'est pas déjà ouvert.
J'ai essayé :
- _FFStart()
- _FFWindowOpen()
- __FFStartProcess()
Rien ne marche !
Re: [..] Module FF.au3
Posté : ven. 08 août 2014 15:37
par jguinch
lokomass, peux-tu nous expliquer ce qu'est censé faire ton script exactement ?
Est-ce qu'il se contente d'ouvrir des pages web ?
Est-ce que le but est de récupérer des infos sur des pages ?
Pourquoi ne pas utiliser IE ?
Re: [..] Module FF.au3
Posté : ven. 08 août 2014 15:42
par timmalos
Toutes les questions de jguinch sont pertinentes et rejoignent mes pensées déjà exprimées et vous devriez sérieusement envisager de nous répondre car vous partez peut-être dans la mauvaise direction et vous compliquez pour rien !
Concernant le problème _FFStart, très certainement que vous êtes sur du x64 et que le chemin est faussé (il me semble avoir eu un problème identique à l'époque), regardez la fonction et adaptez.
Re: [..] Module FF.au3
Posté : ven. 08 août 2014 15:45
par lokomass
En fait, pour expliquer clairement :
Je pratique le tennis en club, et récemment ils ont mis en place un système de réservation en ligne.
J'ai repris leur page en la refaisant à ma sauce, l'ait hébergée sur mon serveur nas, ce qui me permet de réserver un créneau juste en tapant une url dans mon navigateur (en mettant en paramètre la date et l'heure).
J'ai voulu pousser le truc en créant un petit sh, qui passe toutes les nuits, et qui regarde en BDD les créneaux de réservation que je demande, et il appelle la fameuse url avec les bons paramètres.
Jusque là tout devrait fonctionner mais le souci réside dans la phrase : "il appelle la fameuse url avec les bons paramètres".
J'utilise souvent ce procédé lorsque je créer des pages en php, qui m'affichent un résultat, je fais un wget dessus et le tour est joué. Le souci, c'est que ma fameuse page personnalisée, est en php et javascript (jquery).
Du coup, la seule solution que j'ai pu trouvé, c'est que la fameux script sh écrit dans un fichier texte les urls de réservation (en général 1 ou 2) et démarre le PC.
Au démarrage du PC le petit script auto IT se lance, ouvre les pages unes à une (ce qui réserve la créneau), ferme firefox, et s'éteint !
Tout fonctionne presque, ne reste plus qu'à réussir à lancer FF.
Je préfère utiliser firefox car je suis sous Windows 8 et IE est incorporé de façon bizarre, ce n'est plus une page web comme avant et je ne suis pas sur que ça fonctionne pareil.
Voilà les détails

Re: [..] Module FF.au3
Posté : ven. 08 août 2014 15:54
par PandiPanda
Bonjour,
un run() suffirai pas pour ce que vous voulez faire ?
► Afficher le texte
Code : Tout sélectionner
#include <Array.au3>
Local $urls[3] = ["http://www.google.fr","http://www.yahoo.fr","http://www.leboncoin.fr"]
Run("C:\Program Files\Mozilla Firefox\firefox.exe "&_ArrayToString($urls," "))
Re: [..] Module FF.au3
Posté : sam. 09 août 2014 11:23
par lokomass
Le souci dans ta commande est qu'il n'attend pas le chargement...
Tout fonctionne bien avec FF, il me manque juste le FFStart pour finir. J'ai pourtant bien la clé de registre et tout..
Je pense que je vais rentrer le chemin en dur..
Il ne récupère pas bien le path
Code : Tout sélectionner
Local $sHKLM = 'HKEY_LOCAL_MACHINE\SOFTWARE\'
If @OSArch <> 'X86' Then $sHKLM &= 'Wow6432Node\'
$sHKLM &= 'Mozilla\Mozilla Firefox'
Local $sFFExe = RegRead($sHKLM & "" & RegRead($sHKLM, "CurrentVersion") & "\Main", "PathToExe")
MsgBox(0, "r", $sFFExe)
Et la box renvoie une variable vide.
EDIT : J'ai trouvé !!! Sur le net quelqu'un a posté la solution en tout petit dans un coin.
La ligne était erronée
Code : Tout sélectionner
Local $sFFExe = RegRead($sHKLM & "" & RegRead($sHKLM, "CurrentVersion") & "\Main", "PathToExe")
Il fallait ajouter un antislash
Code : Tout sélectionner
Local $sFFExe = RegRead($sHKLM & "\" & RegRead($sHKLM, "CurrentVersion") & "\Main", "PathToExe")
Je suis content ! Merci à vous
Re: [..] Module FF.au3
Posté : sam. 16 août 2014 09:06
par lokomass
Bonjour,
Peut-être ai-je parlé un peu vite...
Mon script fonctionne une fois sur deux pour l'instant...
J'ai eu cette erreur cette nuit :
FFWaitForRepl==>Error TCPSend/TCPrecv:TCPRecv:-1
Je le relance, et la ça a fonctionné.
Que faire ?
Mon script
Code : Tout sélectionner
#include <FF.au3>
$Texte = "N:\Links.txt"
$Fichier = FileOpen($Texte, 0)
_FFStart()
While 1
$ligne = FileReadLine($Fichier)
If @error = -1 Then ExitLoop
If _FFConnect(Default, Default, 3000) Then
_FFOpenURL($ligne)
EndIf
Wend
_FFWindowClose()
Re: [..] Module FF.au3
Posté : sam. 16 août 2014 09:20
par jguinch
Je ne comprends pas... Si c'est pour exécuter un script PHP à distance, un
InetRead ou
InetGet suffisent, non ? C'est ~l'équivalent~ du WGET.
Code : Tout sélectionner
InetGet("http://lesite.com/tennis/reservation.php?arg1=2&arg2=2&arg3=3", @TempDir & "\result.txt", $INET_FORCERELOAD, $INET_DOWNLOADWAIT)
Re: [..] Module FF.au3
Posté : sam. 16 août 2014 09:32
par lokomass
Non car le site en question, comprend également du javascript, et ça wget ne le gère pas, et InetGet non plus.
Re: [..] Module FF.au3
Posté : sam. 16 août 2014 13:20
par orax
Tu pourrais déjà utiliser
_FFIsConnected() (voir l'exemple de _FFStart sur le site) pour gérer automatiquement cette erreur. Pour permettre par exemple retenter une connexion et/ou relancer Firefox en cas d'erreur.
C'est peut-être pas important mais je mettrais aussi un FileClose($Fichier) vers la fin (à moins que ce soit déjà fait dans le vrai script).
Re: [..] Module FF.au3
Posté : dim. 17 août 2014 09:22
par lokomass
Ok merci pour ta réponse je vais tenter ça.
Penses tu que cette erreur n'apparaîtra plus , et ne fera plus planter le script
?
Concernant le fileclose() il est bien présent a la fin
Merci
Re: [..] Module FF.au3
Posté : dim. 17 août 2014 20:08
par orax
T'as bien la dernière version de FF.au3 ?
Je pense que ce n'était pas nécessaire de faire _FFConnect à chaque fois.
J'ai modifié le
If @error = -1 Then ExitLoop car si @error = 1 c'est une boucle infinie.
► Afficher le texte
Code : Tout sélectionner
#include <FF.au3>
$Texte = "N:\Links.txt"
$Fichier = FileOpen($Texte, 0)
_FFStart()
$isConnected = _FFIsConnected()
ConsoleWrite('> Connecté : ' & $isConnected & @CRLF)
While 1
While $isConnected = 0
$isConnected = _FFConnect(Default, Default, 3000)
Sleep(500)
WEnd
$ligne = FileReadLine($Fichier)
If @error Then ExitLoop
_FFOpenURL($ligne)
WEnd
_FFWindowClose()
Re: [..] Module FF.au3
Posté : lun. 18 août 2014 08:42
par lokomass
Merci pour ta réponse je vais corriger mon script.
Je vous tiens au courant les prochains jours de son fonctionnement
Re: [..] Module FF.au3
Posté : sam. 23 août 2014 09:22
par lokomass
Salut !
J'ai donc fait le test avec le connect et cette nuit j'ai eu la même popup d'erreur entre deux pages. Ca n'a pas coupé le programme mais juste il a fallu ce matin que je clique sur OK pour qu'il finisse sa tache.
D'ou peut venir le souci et comment le corriger ?
Re: [..] Module FF.au3
Posté : sam. 23 août 2014 17:25
par orax
L'erreur est bloquante parce que le script doit être compilé ; dans ce cas il affiche une Msgbox.
J'ai aussi modifié le code pour qu'il ne passe pas à la ligne suivante (au site suivant dans le fichier) tant que _FFOpenURL n'a pas fonctionné.
Code : Tout sélectionner
#include <FF.au3>
$_FF_ERROR_MSGBOX = False ; N'affichera pas de MsgBox en cas d'erreur.
$Texte = "N:\Links.txt"
$Fichier = FileOpen($Texte, 0)
_FFStart()
While 1
$ligne = FileReadLine($Fichier)
If @error Then ExitLoop
While _FFOpenURL($ligne) <> 1
_FFConnect(Default, Default, 3000)
Sleep(1000)
WEnd
WEnd
_FFWindowClose()
Re: [..] Module FF.au3
Posté : dim. 24 août 2014 22:27
par lokomass
Merci beaucoup pour ton aide. Je modifie le script et vous tiens au courant