[..] Module FF.au3

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
lokomass
Niveau 5
Niveau 5
Messages : 128
Enregistré le : mer. 15 déc. 2010 10:21
Status : Hors ligne

[..] Module FF.au3

#1

Message 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
Modifié en dernier par lokomass le sam. 16 août 2014 09:04, modifié 2 fois.
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [..] Module FF.au3

#2

Message 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.
lokomass
Niveau 5
Niveau 5
Messages : 128
Enregistré le : mer. 15 déc. 2010 10:21
Status : Hors ligne

Re: [..] Module FF.au3

#3

Message 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 ?
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [..] Module FF.au3

#4

Message 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.
lokomass
Niveau 5
Niveau 5
Messages : 128
Enregistré le : mer. 15 déc. 2010 10:21
Status : Hors ligne

Re: [..] Module FF.au3

#5

Message 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 !
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Module FF.au3

#6

Message 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 ?
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [..] Module FF.au3

#7

Message 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.
lokomass
Niveau 5
Niveau 5
Messages : 128
Enregistré le : mer. 15 déc. 2010 10:21
Status : Hors ligne

Re: [..] Module FF.au3

#8

Message 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 ;)
Avatar du membre
PandiPanda
Membre émérite
Membre émérite
Messages : 656
Enregistré le : mar. 19 juil. 2011 14:03
Localisation : Bruxelles
Status : Hors ligne

Re: [..] Module FF.au3

#9

Message par PandiPanda »

Bonjour,

un run() suffirai pas pour ce que vous voulez faire ?
► Afficher le texte
La seule moralité qui tienne dans un monde cruel est la chance. Impartiale. Équitable. Vraie
lokomass
Niveau 5
Niveau 5
Messages : 128
Enregistré le : mer. 15 déc. 2010 10:21
Status : Hors ligne

Re: [..] Module FF.au3

#10

Message 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
lokomass
Niveau 5
Niveau 5
Messages : 128
Enregistré le : mer. 15 déc. 2010 10:21
Status : Hors ligne

Re: [..] Module FF.au3

#11

Message 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()
 
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Module FF.au3

#12

Message 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)
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
lokomass
Niveau 5
Niveau 5
Messages : 128
Enregistré le : mer. 15 déc. 2010 10:21
Status : Hors ligne

Re: [..] Module FF.au3

#13

Message par lokomass »

Non car le site en question, comprend également du javascript, et ça wget ne le gère pas, et InetGet non plus.
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Module FF.au3

#14

Message 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).
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
lokomass
Niveau 5
Niveau 5
Messages : 128
Enregistré le : mer. 15 déc. 2010 10:21
Status : Hors ligne

Re: [..] Module FF.au3

#15

Message 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
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Module FF.au3

#16

Message 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
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
lokomass
Niveau 5
Niveau 5
Messages : 128
Enregistré le : mer. 15 déc. 2010 10:21
Status : Hors ligne

Re: [..] Module FF.au3

#17

Message par lokomass »

Merci pour ta réponse je vais corriger mon script.
Je vous tiens au courant les prochains jours de son fonctionnement
lokomass
Niveau 5
Niveau 5
Messages : 128
Enregistré le : mer. 15 déc. 2010 10:21
Status : Hors ligne

Re: [..] Module FF.au3

#18

Message 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 ?
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Module FF.au3

#19

Message 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()
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
lokomass
Niveau 5
Niveau 5
Messages : 128
Enregistré le : mer. 15 déc. 2010 10:21
Status : Hors ligne

Re: [..] Module FF.au3

#20

Message par lokomass »

Merci beaucoup pour ton aide. Je modifie le script et vous tiens au courant
Répondre