Page 1 sur 1

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

Posté : jeu. 27 mars 2014 04:58
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).

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

Posté : jeu. 27 mars 2014 05:04
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
.