[R] Utilisation de Controlclick()

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
ferrierd
Niveau 2
Niveau 2
Messages : 27
Enregistré le : mer. 20 avr. 2011 10:27
Status : Hors ligne

[R] Utilisation de Controlclick()

#1

Message par ferrierd »

Bonjour,

Je cherche à simuler un click de souris sur un bouton de mon programme principal à partir d'un programme externe.

Programme Principal:
► Afficher le texte
Programme qui simule le click sur le bouton
► Afficher le texte
Cela fonctionne parfaitement à partir du moment ou ma Form Principal ("$Form1") est visible.

Si $Form1 est cachée, mon simulateur affiche bien ma form, elle s'active, mais impossible d'effectuer la 3ème opération (ControlClick) même si manuellement je clique sur le bouton.

Il doit me manquer une commande ou autre chose pour rendre le bouton actif, mais je ne vois pas...
Par avance Merci
Modifié en dernier par ferrierd le mer. 27 avr. 2011 10:14, modifié 1 fois.
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: [..] Utilisation de Controlclick()

#2

Message par ZDS »

Hello,

J'ai un début de réponse à te fournir : Tu utilises GuiSetState dans ton programme principal, et WinSetState dans le secondaire. Même si elles semblent vouloir faire la même chose, PEUT-ÊTRE que l'une et l'autre agissent différemment au final et qu'elles laissent la fenêtre dans un état zombie. Car si tu changes ton bloc GUISetState(@SW_HIDE) par GUISetState(@SW_SHOW) --/-- WinSetState($Form1,"",@SW_HIDE), ton script remarche sans problème (il est visible pendant une fraction de seconde entre les deux opérations, mais la plupart du temps il n'apparait que dans la barre des tâches).

J'ai essayé de modifier ton "cliqueur" pour marcher avec le GUISetState(@SW_HIDE), en remplaçant ton WinSetState("Notify", "", @SW_SHOW) par un GUISetState(@SW_SHOW, WinGetHandle("Notify")), mais ça ne fonctionne pas. A voir si ça peut être amélioré.

En tout cas, cacher par GUISetState et ré-afficher par WinSetState ne semble pas être la chose à faire. Utilise la même fonction dans les deux cas et ça devrait aller.

Dis moi si ça passe.

A bientôt !

PS: J'oubliais de te dire, avec le "GuiSet SHOW - WinSet HIDE" tu n'es pas obligé d'afficher/activer ta fenêtre principale pour faire ton controlClick, si ça peut t'éviter des ennuis.
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 !
ferrierd
Niveau 2
Niveau 2
Messages : 27
Enregistré le : mer. 20 avr. 2011 10:27
Status : Hors ligne

Re: [..] Utilisation de Controlclick()

#3

Message par ferrierd »

Bonjour

Et merci ZDS de ta réponse explicite sur cette fenetre zombie.

Je confirme cela fonctionne très bien en utilisant les codes suivants:
- GUISetState(@SW_SHOW) au départ affichage rapide la fenetre du prog principal
- puis je n'utilise plus que la fonction WinsetState (que ce soit dans le prog principal que depuis le lanceur) avec les options @SW_HIDE / @SW_SHOW pour afficher ou non ma fenetre principale

Par contre avec GUISetState(@SW_SHOW, WinGetHandle("Notify")) impossible à faire fonctionner le lanceur...

Il doit y avoir une subtilité que je ne maitrise pas encore...

Dans tous les cas merci...
Cordialement,
David
Répondre