[R] Click sur bouton seulement quand il est non grisé

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
mickmicks
Niveau 1
Niveau 1
Messages : 7
Enregistré le : mer. 17 juin 2009 13:13
Localisation : Bordeaux (medoc)
Status : Hors ligne

[R] Click sur bouton seulement quand il est non grisé

#1

Message par mickmicks »

Bonjour le forum,

Je suis tombé sur un pti probleme lors de la creation de mon script. Je fais une sorte d'installation automatique. Et a un moment sur une fenetre ou un bouton est grisé et je dois cliqué dessus quand il est non grisé.

Quand je fait le click meme sur le bouton grisé, le script continue... et du coup mon action n'est pas terminé.

Image
Image

J'ai vu pas mal d'exemple sur le forum, mais souvent c'est dans le sens contraire, les personnes veulent grisé un bouton.

Si quelqu'un a une idée.

Merci d'avance
Modifié en dernier par mickmicks le jeu. 09 juil. 2009 15:23, modifié 1 fois.
Avatar du membre
jumby
Niveau 5
Niveau 5
Messages : 118
Enregistré le : jeu. 12 juin 2008 17:50
Status : Hors ligne

Re: [...] Click sur bouton seulement quand il est non grisé

#2

Message par jumby »

Utilisez la fonction GUICtrlSetState.
GUICtrlSetState ( controlID, $GUI_ENABLE ) ; Activera le controle
GUICtrlSetState ( controlID, $GUI_DISABLE ) ; Désactivera le control (grisé)
mickmicks
Niveau 1
Niveau 1
Messages : 7
Enregistré le : mer. 17 juin 2009 13:13
Localisation : Bordeaux (medoc)
Status : Hors ligne

Re: [...] Click sur bouton seulement quand il est non grisé

#3

Message par mickmicks »

Merci pour ta reponse Jumby mais ça ne fait pas parti d'une GUI, se sont des boutons d'un logiciel...c'est ça qui me fait bloquer
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [...] Click sur bouton seulement quand il est non grisé

#4

Message par orax »

Code : Tout sélectionner

#Include <WinAPI.au3>
#Include <Constants.au3>
_WinAPI_GetWindowLong($hWnd, $GWL_STYLE)
Quand un bouton est grisé, je pense qu'il prend le style style WS_DISABLED (0x08000000).
Je crois que j'avais écrit un exemple pour l'utiliser mais je n'arrive plus à le retrouver. Image
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

Re: [...] Click sur bouton seulement quand il est non grisé

#5

Message par ani »

mickmicks
Niveau 1
Niveau 1
Messages : 7
Enregistré le : mer. 17 juin 2009 13:13
Localisation : Bordeaux (medoc)
Status : Hors ligne

Re: [...] Click sur bouton seulement quand il est non grisé

#6

Message par mickmicks »

Merci Ani et Orax, cette solution me semblait adapté mais je n'arrive pas a retrouver votre fonctionnement.

Quand je met des msgbox un peut partout pour consulter les valeurs des variables $style ou $bhandle. Le Bhandle, il n'y a pas de probleme mais le style est en Décimale et non en 0x50010000 (hexa?).
Comme dans le cas du lien de ani, mon bouton passe du style 0x58010000 à 0x50010000.
Donc il faudrait que je fasse attendre mon script tant que je n'ai pas ce changement de style.
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [...] Click sur bouton seulement quand il est non grisé

#7

Message par orax »

En fait, c'est msgbox() qui renvoie la valeur en décimal mais je ne pense pas que ça ait de l'importance étant donné que : 0x08000000 = 134217728 = $WS_DISABLED.

Code : Tout sélectionner

; Dans l'include il y a "Global Const $WS_DISABLED = 0x08000000" (noté en hexa) mais MsgBox() renvoie la valeur en décimal :
MsgBox(0,"",$WS_DISABLED)

; Pour l'avoir en hexadécimal (il y a aussi StringFormat() qui permet de faire des conversions) :
MsgBox(0,"",Hex($WS_DISABLED))
Et pour la boucle il n'y a pas grand chose à changer.

Code : Tout sélectionner

$bhandle = ControlGetHandle("À propos de Bloc-notes", "", "Button1") ; "A propos" du Bloc-notes

; boucle jusqu'à ce que le bouton NE soit PAS désactivé
Do
    $style = _WinAPI_GetWindowLong($bhandle, $GWL_STYLE)
    Sleep(100)
Until Not BitAND($style, $WS_DISABLED)
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
mickmicks
Niveau 1
Niveau 1
Messages : 7
Enregistré le : mer. 17 juin 2009 13:13
Localisation : Bordeaux (medoc)
Status : Hors ligne

Re: [R] Click sur bouton seulement quand il est non grisé

#8

Message par mickmicks »

Merci Orax, ça marche impec :)
Répondre