[R] Control Style

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
powerfear
Niveau 1
Niveau 1
Messages : 6
Enregistré le : jeu. 11 juin 2009 01:37
Status : Hors ligne

[R] Control Style

#1

Message par powerfear »

Bonjour, j'aurais besoin d'aide je fait un script qui appuis sur le bouton d'un certain programme

ce que je veux faire c'est attendre que le boutton est un certain style avant de clické dessus est-ce possible?

le style du bouton quand il n'est pas "clickable" c'est: 0x5801000B

il faudrait attendre que le bouton est le style: 0x5001000B avant de clické
Modifié en dernier par powerfear le ven. 12 juin 2009 15:56, modifié 2 fois.
guitarist
Niveau 6
Niveau 6
Messages : 235
Enregistré le : mar. 02 déc. 2008 16:59
Status : Hors ligne

Re: [..] Control Style

#2

Message par guitarist »

Je pense avoir la solution :

Il suffit de faire un jeu de If ou de Case tu dit que lorsque le boutton n'as pas été cliké alors Guictrlsetbkcolor (hex etc..) sinon GUIctrlsetBkcolor (Hex etc...)
J'espere mettre fait comprendre
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11798
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Control Style

#3

Message par Tlem »

Utilisez AutoIt Windows Info afin de récupérer des éléments sur votre contrôle.
Trouver une solution pour récupérer le handle de votre bouton.
Ensuite utilisez la fonction GUIGetStyle pour voir son style.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
powerfear
Niveau 1
Niveau 1
Messages : 6
Enregistré le : jeu. 11 juin 2009 01:37
Status : Hors ligne

Re: [..] Control Style

#4

Message par powerfear »

D'accord merci Tlem j'ai ceci comme script pour l'instant mais sa ne marche pas...

Code : Tout sélectionner

ShellExecute("...")
Sleep("5000")
While 1=1
$bhandle=ControlGetHandle("...","","Button1")
$wbutton=GUIGetStyle($bhandle)
If $wbutton="0x5801000B" Then
ControlClick("...","","Button1")
ExitLoop
EndIf
WEnd
J'ai remplacé les nom de programme par des ... pusiqu'il ne sont pas imporant pour comprendre le script

edit: jai fait des test avec des MsgBox et c'est au niveaux de $wbutton=GUIGetStyle($bhandle) que sa ne marche pas il ne donne pas le bon style, il donne 0... je vai allé voir dans le doc comment GUIGetStyle fonctionne...

edit2: bon jai trouvé qu'il faut que j'utilise $wbutton=GUIGetStyle($bhandle[0]) mais dans ce cas dans le debuger de scite (dans le bas) il apparait: path du script...... : ==> Subscript used with non-Array variable.:
MsgBox(1,"",$wbutton[0])
MsgBox(1,"",$wbutton^ ERROR

je crois qu'il faut un handle qui specifie le procesus du programme en question peut-étre, ou peut-étre que GuiGetStyle marche seulement avec le scirpt lui meme et non un programme externe...
Modifié en dernier par Tlem le ven. 12 juin 2009 07:31, modifié 1 fois.
Raison : Suppression balise Autoit (réservée à d'autres forum)
SagePourpre
Niveau 7
Niveau 7
Messages : 442
Enregistré le : dim. 06 juil. 2008 09:11
Status : Hors ligne

Re: [..] Control Style

#5

Message par SagePourpre »

GUIGetStyle
--------------------------------------------------------------------------------

Retrieves the styles of a GUI window.


(Tiré de l'aide)

Guigetstyle n'est donc pas une fonction servant à récupérer le style d'un bouton...


Peut-être

GUICtrlGetHandle
--------------------------------------------------------------------------------

Returns the handle for a control and some special (item) handles (Menu, ContextMenu, TreeViewItem).



serait plus adapté. (Je ne l'ai pas testé, mais en lisant la définition, cela semble être possiblement la bonne fonction à utiliser)
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Control Style

#6

Message par orax »

J'ai fait un test avec le code ci-dessous avec le bouton "Ok" de la fenêtre "A propos" du bloc-notes, et ça marche. (J'ai utilisé Winspy++ pour pouvoir griser simplement le bouton "Ok".)

Code : Tout sélectionner

#include <WinAPI.au3>
#include <Constants.au3>
#include <WindowsConstants.au3>
$bhandle = ControlGetHandle("À propos de Bloc-notes", "", "Button1") ; "A propos" du Bloc-notes
$style = _WinAPI_GetWindowLong($bhandle, $GWL_STYLE)
If BitAND($style, $WS_DISABLED) Then MsgBox(0, "", "Bouton désactivé")
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
powerfear
Niveau 1
Niveau 1
Messages : 6
Enregistré le : jeu. 11 juin 2009 01:37
Status : Hors ligne

Re: [..] Control Style

#7

Message par powerfear »

orax a écrit :J'ai fait un test avec le code ci-dessous avec le bouton "Ok" de la fenêtre "A propos" du bloc-notes, et ça marche. (J'ai utilisé Winspy++ pour pouvoir griser simplement le bouton "Ok".)

Code : Tout sélectionner

#include <WinAPI.au3>
#include <Constants.au3>
#include <WindowsConstants.au3>
$bhandle = ControlGetHandle("À propos de Bloc-notes", "", "Button1") ; "A propos" du Bloc-notes
$style = _WinAPI_GetWindowLong($bhandle, $GWL_STYLE)
If BitAND($style, $WS_DISABLED) Then MsgBox(0, "", "Bouton désactivé")
Merci sa la marché de cette facon ^^
Répondre