Page 1 sur 1
[R] Control Style
Posté : jeu. 11 juin 2009 01:43
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é
Re: [..] Control Style
Posté : jeu. 11 juin 2009 19:12
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
Re: [..] Control Style
Posté : jeu. 11 juin 2009 21:03
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.
Re: [..] Control Style
Posté : ven. 12 juin 2009 01:38
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...
Re: [..] Control Style
Posté : ven. 12 juin 2009 05:00
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)
Re: [..] Control Style
Posté : ven. 12 juin 2009 05:21
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é")
Re: [..] Control Style
Posté : ven. 12 juin 2009 15:56
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 ^^