[R] Alternance de fenêtres

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Sh4dows
Status : Hors ligne

[R] Alternance de fenêtres

#1

Message par Sh4dows »

Bonjour à tous !

J'aurais donc besoin d'un petit script :lol: d'habitude c'est pas mon genre mais là... :roll:

Sujet :

Donc j'aimerais si possible et si une personne à un peu de temps un script permettant de lancer une fonction/boite de dialogue dans mon cas si le titre de la fenêtre est différente de la première qui elle etait présente dans le tableau.

Details :

Pour ce code nous allons travaillez avec Mozilla Firefox. Donc, admettons que j'ai un tableau avec une liste de noms, des noms de fenêtres par exemple.

Code : Tout sélectionner

$pageListe[10]
$pageListre[0] = "Google - Mozilla Firefox"
$pageListre[1] = "AutoIt Français • Accueil - Mozilla Firefox"
 
Je souhaiterez récupérer le nom de la fenêtre/onglet active de Mozilla afin de vérifier si elle est présente dans mon tableau. Si elle l'est alors on lance une boite de dialogue par exemple :

Code : Tout sélectionner

MsgBox(64, "AutoIt", "La Fenêtre est présente dans la tableau !")
Ensuite si elle à était présente on vérifie si l'utilisateur en locurrence, change de fenêtre ou d'onglet, pour cela si la fenêtre/onglet active de Mozilla est différente de la dernière qui elle était présente dans le tableau alors on affiche également une boite de dialogue :

Code : Tout sélectionner

MsgBox(64, "AutoIt", "La Fenêtre à changé !")
Et on recommence du début et ceci en boucle !

Mais au début du code je pense qu'il faut vérifier si le processus est actif ou non et utiliser les CLASS car avec http://autoitscript.fr/forum/viewtopic.php?f=3&t=5583 le script fonctionnée à peu près sous Vista mais sous Seven rien du tout !

J'avais testouille :

Code : Tout sélectionner

If ProcessExists("firefox.exe") and WinActive("[CLASS:MozillaUIWindowClass]") Then
 
Mais ne suis pas arriver à faire quelque chose de concret suivant mes besoins !

Donc Merci par avance à celui/celle ou ceux (on ne sait jamais) qui aura l'aimabilité de m'aider :cry: :shock:

Merci par avance !

Cordialement Sh4dows
Modifié en dernier par Sh4dows le jeu. 29 juil. 2010 21:36, modifié 1 fois.
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] Alternance de fenêtres

#2

Message par sylvanie »

bonsoir

voici un premier jet avec une restriction d'usage explicitée après le code :
► Afficher le texte
je me fie au titre et non à l'ID de l'onglet. Ce qui veut dire que si 2 onglet sont ouverts sur google par exple, alors la détection échouera

je n'ai pas le temps sur le coups, mais le TODO sera alors de garder en mémoire l'id du tab (si possible) pour le comparer

Bonne continuation
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Sh4dows
Status : Hors ligne

Re: [..] Alternance de fenêtres

#3

Message par Sh4dows »

Merci beaucoup @sylvanie je vais voir ce que j'arrive à faire avec :roll:
Je vous tiens au courant !
Sh4dows
Status : Hors ligne

Re: [..] Alternance de fenêtres  

#4

Message par Sh4dows »

J'ai réussi je pense à faire ce que je voulais grace à Sylvanie :)

Code : Tout sélectionner

Opt("WinTitleMatchMode",2)
Dim $pageListe[10]
$pageListe[0] = "Google - Mozilla Firefox"
$pageListe[1] = "AutoIt Français • Accueil - Mozilla Firefox"
$maxind=1

While 1
    Monitor_FF()
    Sleep(250)
WEnd


Func Monitor_FF()
    Local $endtitle="Mozilla Firefox"
    Local $title
    Local $ind
    Local Static $old_window=""
    $title = WinGetTitle("")
    If StringRegExp($title,$endtitle&"\z") And BitAND(WinGetState($title),16) = 0 Then
        If $title = $old_window Then Return 0
        For $ind = 0 To $maxind
            If $old_window=$pageListe[$ind] and $title <> $pageListe[$ind] Then
                MsgBox(64, "AutoIt", "La Fenêtre était présente dans la tableau !")
                $old_window=$title
                Return 1
            EndIf
        Next
        $old_window=$title
        MsgBox(64, "AutoIt", "La Fenêtre à changé !")
    EndIf
    Return 0
EndFunc
 
Merci beaucoup :wink:
Répondre