[R] Détection du changement de focus avec GUIRegisterMsg

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
ZDS
Membre émérite
Membre émérite
Messages : 554
Enregistré le : jeu. 10 juin 2010 10:35
Localisation : 22300 Cul-d'chouette Langue-de-vache
Status : Hors ligne

[R] Détection du changement de focus avec GUIRegisterMsg

#1

Message par ZDS »

Bonjour à tous,

Comme le titre du topic le dit, je cherchais à détecter les changements de focus via GUIRegisterMsg (pour pouvoir effectuer un redraw rapide à chaque perte de focus pour une autre appli, car certaines applis en overlay effacent les jolis dessins qui s'affichent sur mon script). Je suis tombé sur ce script d'aide pour la fonction "_WinAPI_RegisterShellHookWindow" :
► Afficher le texte_WinAPI_RegisterShellHookWindow
Mais visiblement, ça ne fonctionne pas (et sur le forum anglophone, qq1 a déterré un topic de 2009 à cause de ce bug). La fonction WM_SHELLHOOK est apparemment appelée au bon moment (deux fois par contre, sans doute une fois pour le unfocus, et une autre pour le nouveau focus), mais $HSHELL_WINDOWACTIVATED n'est pas correctement géré.

Quelqu'un saurait comment pallier le problème?

Merci d'avance, et à bientôt !

PS: GUIRegisterMsg indispensable, ne pouvant pas me permettre un truc du style

Code : Tout sélectionner

If $focus <> WinActive("[ACTIVE]") Then
    $focus = WinActive("[ACTIVE]")
    redraw_MAINGUI()
EndIf
Car je ne pourrai pas mettre ce bout de code entre chaque ligne d'une procédure plus ou moins longue (copie de fichiers).
Modifié en dernier par ZDS le jeu. 27 mars 2014 05:04, modifié 1 fois.
ZDS : Chef de projet du nAiO (logiciel AutoIt gratuit sous licence CC 4.0 BY-NC-SA)
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
Avatar du membre
ZDS
Membre émérite
Membre émérite
Messages : 554
Enregistré le : jeu. 10 juin 2010 10:35
Localisation : 22300 Cul-d'chouette Langue-de-vache
Status : Hors ligne

Re: [..] Détection du changement de focus avec GUIRegisterMs

#2

Message par ZDS »

Oups, souci résolu, la ligne 22

Code : Tout sélectionner

Case $HSHELL_WINDOWACTIVATED
est en fait à remplacer par

Code : Tout sélectionner

Case $HSHELL_WINDOWACTIVATED, $HSHELL_RUDEAPPACTIVATED
.
ZDS : Chef de projet du nAiO (logiciel AutoIt gratuit sous licence CC 4.0 BY-NC-SA)
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
Répondre