Page 1 sur 1

[R] Lister tous les onglets FIREFOX

Posté : mar. 06 sept. 2016 20:58
par franco
Bonjour.

Pour un projet, j'ai décidé d'envoyer le lien de l'onglet actuel de firefox sur mon mail : j'y arrive.
Grâce à ce lien : https://www.autoitscript.com/forum/topi ... ent=805551

Maintenant, j'essaye de lister tous les onglets (le lien de chaque onglet) firefox : et là, je coince.

J'ai décidé d'utiliser l'include FF.au3 pour cela. Celui-ci : https://www.autoitscript.com/forum/topi ... v0601b-15/
Et m'étais inspiré de ceci : http://www.thorsten-willert.de/index.ph ... /beispiele

Surtout ces scripts exemples :
http://www.thorsten-willert.de/media/me ... GetAll.au3
http://www.thorsten-willert.de/media/me ... oArray.au3

Bref, je n'y arrive pas...


Du coup, j'ai procédé autrement :
1. Je détecte Firefox via un WinActivate (un peu élaboré ^^)
2. Je détecte le titre de l'onglet actuel.
3. Je récupère l'adresse de l'onglet : Send("^l") pour sélectionner le lien complet et Send("^c") pour le copier dans le presse papier
4. Je sauvegarde le contenu du presse papier (donc le lien de l'onglet) dans un fichier.
5. Je bascule vers l'onglet suivant et réitère l'opération, tout en détectant à nouveau le titre de la fenêtre (donc l'onglet)
6. Et si le titre de départ (cf 2.) est identique au dernier (cf 5.), je quitte la boucle.

Voici le code :

Code : Tout sélectionner

#include <file.au3>

Local $oTitle = "", $Title = "", $LinkTab = ""
$FileTab = @TempDir & "\onglets.txt"
$FT = FileOpen($FileTab, 2)

Local $aList = WinList()
For $i = 1 To $aList[0][0]
	If StringInStr($aList[$i][0], "Mozilla Firefox") Then $oTitle = $aList[$i][0]
Next
$oTitle_ = StringReplace($oTitle, ' - Mozilla Firefox', '')

If $oTitle = "" Then
	FileDelete($FileTab)
	Exit
EndIf

While 1

	If BitAND(WinGetState($oTitle), 16) Then WinSetState("[Title:" & $oTitle & "]", "", @SW_MAXIMIZE)
	WinActivate($oTitle, "")
	Sleep(1000)
	Send("^l")
	Send("^c")
	FileWriteLine($FT, $oTitle_ & "  -  " & ClipGet())
	Sleep(100)
	Send("^{TAB}")
	Sleep(100)

	Local $bList = WinList()
	For $i = 1 To $aList[0][0]
		If StringInStr($bList[$i][0], "Mozilla Firefox") Then $Title = $bList[$i][0]
	Next
	$oTitle_ = StringReplace($Title, ' - Mozilla Firefox', '')

	If $Title = "" Then ExitLoop
	If $Title = $oTitle Then ExitLoop

WEnd
FileClose($FT)
If FileExists($FileTab) Then ShellExecute($FileTab)
Ce code fonctionne.

Ma question : existe-t-il un moyen plus simple de lister tous les onglets de Firefox ?
Si oui, donnez moi des pistes, svp, pour que je puisse tester. ;)

j'avais vu ce lien ( What Tabs Are Open In Firefox ), mais quand on a plusieurs profils, et que le profil par défaut ne contient pas .default, c'est mort ^^
Et même si le dossier content .default, ça ne fonctionne pas non plus.


Un grand merci à tous.
Et bonne soirée.
++

Re: [..] Lister tous les onglets FIREFOX

Posté : mar. 06 sept. 2016 21:28
par orax
> Ma question : existe-t-il un moyen plus simple de lister tous les onglets de Firefox ?
Je ne sais pas quel est Il y a des extensions pour Firefox qui pourraient faire ça. Moi, par exemple, pour récupérer l'URL de plusieurs onglets, j'utilise Multiple Tab Handler.

D'après ce que j'ai compris dans la doc de FF.au3, _FFTableWriteToArray c'est pour les tableaux HTML (<table>), ce n'est pas pour les onglets.
Et _FFLinksGetAll je pense que c'est pour récupérer les liens de la page active.

:idea: Voir _FF_TabGetAllTitles et _FF_TabGetAllURLs dans dans FFEx.au3.

Re: [..] Lister tous les onglets FIREFOX

Posté : mar. 06 sept. 2016 21:46
par franco
Salut.

Premièrement : un GRAND merci pour l'extension Firefox.
Qui me satisfait pour une autre question que je n'ai pas encore poisé. :mrgreen:

Complet, j'apprécie : encore merci.
:idea: Voir _FF_TabGetAllTitles et _FF_TabGetAllURLs dans dans FFEx.au3.
Alors là, encore un GRAND merci.

C'est une sacrée piste.

J'y vais de ce pas. ;)

PS : je ne connais pas cet UDF ;)


++

Re: [..] Lister tous les onglets FIREFOX

Posté : mer. 07 sept. 2016 08:46
par amphase
Pour fonctionner, l'include FF.au3 nécessite impérativement que l'extension pour Firefox MozRepl soit installée et lancée.

Re: [..] Lister tous les onglets FIREFOX

Posté : mer. 07 sept. 2016 15:50
par franco
Salut.

Merci de vos réponse. :)

Et vu que FFEx.au3 a besoin de FF.au3, donc toujours besoin de MozRepl. ;)
Il est déjà paramétré pour qu'il se lance automatiquement au démarrage de Firefox.

J'ai bien sur télécharger FFEx.au3 et FF.au3, ici : http://www.thorsten-willert.de/index.ph ... oit/ff-au3

J'ai fait ce petit code :

Code : Tout sélectionner

#include <FFEx.au3>
#include <array.au3>
$a =_FF_TabGetAllURLs()
_ArrayDisplay($a)
Et une erreur survient, dans FF.au3... :s
__FFSend ==> Socket Error
"C:\Users\tomce\Desktop\SendTabLink\FF.au3" (2365) : ==> Variable used without being declared.:
SetError(__FFError($sFuncName, $_FF_ERROR_RetValue, $sRet))
SetError(__FFError($sFuncName, $_FF_ERROR_RetValue, ^ ERROR
Et en visualisant FF.au3, c'est lié (?) à la fonction
► Afficher le texte_FFCmd
ou à la fonction
► Afficher le texte__FFSend
Bref, j'y perd mon latin et mon français. :mrgreen:

Une idée de l'erreur que j'ai pu commettre ?
Que dois-je donc encore modifié sur l'include FF.au3 ou FFEx.au3 ?


@+ et bonne jourée.

Cordialement,
Thomas.

Re: [..] Lister tous les onglets FIREFOX

Posté : mer. 07 sept. 2016 18:52
par franco
Lu'

Bon, résolu...

J'ai totalement zappé que pour afficher les onglets de Firefox, faut d'abord utiliser _FFConnect()
:oops:

Code : Tout sélectionner

#Include <FFEx.au3>
_FFConnect()
 _ArrayDisplay(_FF_TabGetAllURLs())
Et là, ça fonctionne.

Du coup, me reste plus qu'à faire une boucle pour récupérer le contenu du tableau.


(que je suis crétin parfois ^^).


En tout cas merci !
++