[R] problème pour détecter la présence de Thunderbird

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
EricF
Niveau 4
Niveau 4
Messages : 72
Enregistré le : mar. 08 mars 2011 23:06
Status : Hors ligne

[R] problème pour détecter la présence de Thunderbird

#1

Message par EricF »

Bonjour,
Je tente de détecter si Thunderbird est ouvert (et notamment une fenêtre de rédaction de message) pour pouvoir le fermer.
Après plusieurs essais, voici le résultat :

- j'ai réussi à vérifier la présence de TB par la class (la vérification par le titre ne marche pas).
- La vérification de la fenêtre de rédaction de message fonctionne, mais je dois fermer totalement TB pour que le WinWaitClose() s'interrompe et que le message "TB fermé" s'affiche.
- Si la fenêtre de rédaction de message n'est pas détectée, le message "fermeture de TB" s'affiche, mais TB n'est pas fermé.

Code : Tout sélectionner

MsgBox(0, "", "lancement", 3)
If WinExists("[CLASS:MozillaWindowClass]") Then ;La fenêtre principale de TB existe
	MsgBox(0, "", "main window open", 2)
	If WinExists("[TITLE:Rédaction; CLASS:MozillaWindowClass]") Then ;La fenêtre de rédaction de message existe
		MsgBox(0, "", "write window open", 2)
		$MsgBox_OkCancel = MsgBox(1, "Sauvegarde de Thunderbird", "La sauvegarde de Thunderbird attend la fermeture de la fenêtre de rédaction de message de Thunderbird. Cliquez sur OK pour attendre et sur Annuler pour arrêter la sauvegarde.")

			If $MsgBox_OkCancel = 2 Then ;Clic sur Annuler
				Exit(1)
			EndIf
		;On attend sa fermeture, puis on ferme TB
		WinWaitClose("[TITLE:Rédaction; CLASS:MozillaWindowClass]")
		;;WinWaitClose("[TITLE:Rédaction; CLASS:MozillaWindowClass]")
		WinClose("[CLASS:MozillaWindowClass]")
		;;WinClose("[TITLE:Mozilla Thunderbird; CLASS:MozillaWindowClass]")
		MsgBox(0, "", "TB fermé")
	Else
		;Sinon on ferme TB
		MsgBox(0, "", "fermeture de TB")
		WinClose("[CLASS:MozillaWindowClass]")
		;;WinClose("[TITLE:Mozilla Thunderbird; CLASS:MozillaWindowClass]")
	EndIf
Else
	MsgBox(0, "", "TB non ouvert")
EndIf

Exit(0) ;On quitte et on renvoie un code 0
Je ne suis pas très à jour puisque j'utilise la version 3.3.8.1 d'AutoIt.
Modifié en dernier par EricF le ven. 08 avr. 2016 13:07, modifié 1 fois.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: problème pour détecter la présence de Thunderbird

#2

Message par mikell »

Tu as essayé ProcessExists() et ProcessClose() ?
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
EricF
Niveau 4
Niveau 4
Messages : 72
Enregistré le : mar. 08 mars 2011 23:06
Status : Hors ligne

Re: problème pour détecter la présence de Thunderbird

#3

Message par EricF »

C'est ce que j'utilisais avant avec mon ancien OE. Mais ça ne permet pas de vérifier si un message est en cours.... Ca coupe tout simplement. Et j'imagine que Winclose() simule le clic sur l'icône Fermer, donc plus propre.
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: problème pour détecter la présence de Thunderbird

#4

Message par orax »

MozillaWindowClass ça n'est pas forcément Thunderbird, ça peut être aussi Firefox. Le script pourrait donc détecter la mauvaise fenêtre.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
EricF
Niveau 4
Niveau 4
Messages : 72
Enregistré le : mar. 08 mars 2011 23:06
Status : Hors ligne

Re: problème pour détecter la présence de Thunderbird

#5

Message par EricF »

J'utilise Palemoon. Je vérifierai sa classe, mais our le WinWaitClose, le script se débloque après fermeture de thunderbird. D'ailleurs, j'utilise la classe simplement parce que la vérification par le titre ne fonctionne pas. Si tu as une alternative, je suis preneur !
EricF
Niveau 4
Niveau 4
Messages : 72
Enregistré le : mar. 08 mars 2011 23:06
Status : Hors ligne

Re: problème pour détecter la présence de Thunderbird

#6

Message par EricF »

J'ai vérifié, la classe de Palemoon est la même :-/ si quelqu'un a une alternative ou sait pourquoi la vérification par le titre ne fonctionne pas....
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: problème pour détecter la présence de Thunderbird  

#7

Message par orax »

Dans mon cas, le script ne marchait pas car il trouvait Firefox. Cette fois, il va chercher une fenêtre qui a un titre qui se termine par " - Mozilla Thunderbird" avec la classe MozillaWindowClass. Le $ à la fin de Thunderbird signifie "fin de chaîne" dans la chaîne à chercher.
J'ai utilisé WinGetHandle pour éviter de rechercher la fenêtre à partir de son titre à chaque fois (surtout au niveau de la boucle).
Global Const $WIN_STATE_VISIBLE = 2

$hThunderbird = WinGetHandle("[REGEXPTITLE: - Mozilla Thunderbird$; CLASS:MozillaWindowClass]") ;Récupère le handle d'un titre qui se termine par " - Mozilla Thunderbird"
$hRedaction = WinGetHandle("[TITLE:Rédaction; CLASS:MozillaWindowClass]")

If WinExists($hThunderbird) Then ;La fenêtre principale de TB existe
   MsgBox(0, "", "main window open", 2)
   If WinExists($hRedaction) Then ;La fenêtre de rédaction de message existe
      MsgBox(0, "", "write window open", 2)
      $MsgBox_OkCancel = MsgBox(1, "Sauvegarde de Thunderbird", "La sauvegarde de Thunderbird attend la fermeture de la fenêtre de rédaction de message de Thunderbird. Cliquez sur OK pour attendre et sur Annuler pour arrêter la sauvegarde.")

      If $MsgBox_OkCancel = 2 Then ;Clic sur Annuler
         Exit (1)
      EndIf

      ;On attend sa fermeture, puis on ferme TB
      ;Boucle tant que la(les) fenêtre(s) "Rédaction" est(sont) visible(s)
      While BitAND(WinGetState($hRedaction), $WIN_STATE_VISIBLE)
         Sleep(250)
      WEnd
   EndIf

   MsgBox(0, "", "fermeture de TB")
   WinClose($hThunderbird)
Else
   MsgBox(0, "", "TB non ouvert")
EndIf

Exit (0) ;On quitte et on renvoie un code 0
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
EricF
Niveau 4
Niveau 4
Messages : 72
Enregistré le : mar. 08 mars 2011 23:06
Status : Hors ligne

Re: problème pour détecter la présence de Thunderbird

#8

Message par EricF »

Merci. Je regarderai demain
EricF
Niveau 4
Niveau 4
Messages : 72
Enregistré le : mar. 08 mars 2011 23:06
Status : Hors ligne

Re: problème pour détecter la présence de Thunderbird

#9

Message par EricF »

Ca marche bien, à part un souci de handle fantôme, qui n'est même pas retourné par WinList(). Je devrais pouvoir corriger ça. Merci pour ton aide.
Répondre