Page 1 sur 1
AutoIt ne reconnaît pas les CheckBox d'un SystreeView32
Posté : mer. 11 mai 2016 17:42
par Jules
Bonjour,
Je suis actuellement confronté à un problème. Je dois décocher toutes les cases d'un SysTreeView32, présenté ici :
Cependant, il m'est impossible de cocher une case avec ControlTreeView et la fonction _GUICtrlTreeView_SetChecked ou avec la fonction ControlTreeView.
De plus, AutoIt m'indique que les Items ne sont pas des Checbox, car ControlTreeView(...,"IsChecked", ...) renvoie -1.
Pourriez-vous m'aider à résoudre ce problème ?

Re: AutoIt ne reconnaît pas les CheckBox d'un SystreeView32
Posté : jeu. 12 mai 2016 16:47
par mikell
As-tu conscience au moins que les infos fournies sur la fenêtre, le controle à commander et le script utilisé sont d'une pauvreté affligeante ?

Re: AutoIt ne reconnaît pas les CheckBox d'un SystreeView32
Posté : jeu. 12 mai 2016 17:51
par Jules
Désolé j'avais fait ça hier soir juste avant de partir rapidement pour pas rater mon bus x)
Voici donc le rapport d'AutoIt Window Info :
>>>> Window <<<<
Title: Table des matières
Class: XTPDockingPaneMiniWnd
Position: 8, 79
Size: 348, 865
Style: 0x94481100
ExStyle: 0x00000180
Handle: 0x000F1D10
>>>> Control <<<<
Class: SysTreeView32
Instance: 1
ClassnameNN: SysTreeView321
Name:
Advanced (Class): [CLASS:SysTreeView32; INSTANCE:1]
ID: 1012
Text: Tree1
Position: 0, 26
Size: 341, 810
ControlClick Coords: 137, 190
Style: 0x5031400D
ExStyle: 0x00000204
Handle: 0x000B2192
>>>> Mouse <<<<
Position: 148, 320
Cursor ID: 0
Color: 0xFFFFFF
>>>> StatusBar <<<<
>>>> ToolsBar <<<<
>>>> Visible Text <<<<
Table des matières
Contenu
Tree1
xtpBarTop
ContentsViewToolbar
xtpBarBottom
xtpBarLeft
xtpBarRight
Donc en fait ce qui se passe c'est qu'AutoIt arrive bien à lister les éléments du TreeView (avec ControlTreeView et des path de type #0|#1| ... AutoIt retrouve bien les éléments), mais il ne les voie pas comme des CheckBox. Du coup, je ne peux pas utiliser de ControlTreeView(..., "Check").
Et j'avoue ne pas du tout comprendre pourquoi :/
J'ai testé le code suivant (je ne mets volontairement pas tout mon script qui est trop long) :
ControlCommand("Table des matières", "", "SysTreeView321", "IsChecked", "Service de l'Observation et des Statistiques") et il me renvoie -1 (= pas une Checkbox)
Et logiquement, ControlCommand("Table des matières", "", "SysTreeView321", "Uncheck", "Service de l'Observation et des Statistiques") ne décoche pas la case, mais bizarrement, AutoIt ne met pas d'erreur @error n'est pas à 1).
Idem avec les _GUICtrlTreeView_* qui ne font rien du tout.
Re: AutoIt ne reconnaît pas les CheckBox d'un SystreeView32
Posté : jeu. 12 mai 2016 22:16
par TomAijerrie
Code : Tout sélectionner
#include <GuiTreeView.au3>
Global $hWnd_TV = ControlGetHandle("Table des matières", "", "[CLASS:SysTreeView32]")
_GUICtrlTreeView_SetChecked($hWnd_TV,$LigneOuIlYALaCaseACocher, True);ou fase pour décocher
Re: AutoIt ne reconnaît pas les CheckBox d'un SystreeView32
Posté : jeu. 12 mai 2016 22:22
par mikell
Tu as essayé avec les index ? genre :
Code : Tout sélectionner
msgbox(0,"", ControlTreeView("Table des matières", "", "SysTreeView321", "IsChecked", "#0|#1") )
ControlTreeView("Table des matières", "", "SysTreeView321", "Collapse", "#0|#1")
ControlTreeView("Table des matières", "", "SysTreeView321", "Uncheck", "#0|#1")
Re: AutoIt ne reconnaît pas les CheckBox d'un SystreeView32
Posté : ven. 13 mai 2016 09:12
par Jules
Message #5 par mikell » jeu. 12 mai 2016 22:22
Tu as essayé avec les index ? genre :
Code : Tout sélectionner
msgbox(0,"", ControlTreeView("Table des matières", "", "SysTreeView321", "IsChecked", "#0|#1") )
ControlTreeView("Table des matières", "", "SysTreeView321", "Collapse", "#0|#1")
ControlTreeView("Table des matières", "", "SysTreeView321", "Uncheck", "#0|#1")
J'avais effectivement essayé d'utiliser le ControlTreeView mais rien ne se passe, même avec les index ...
Re: AutoIt ne reconnaît pas les CheckBox d'un SystreeView32
Posté : ven. 13 mai 2016 09:28
par Jules
TomAijerrie a écrit :Code : Tout sélectionner
#include <GuiTreeView.au3>
Global $hWnd_TV = ControlGetHandle("Table des matières", "", "[CLASS:SysTreeView32]")
_GUICtrlTreeView_SetChecked($hWnd_TV,$LigneOuIlYALaCaseACocher, True);ou fase pour décocher
J'ai essayé mais malheureusement ça n'a aucun effet. Je ne comprends absolument pas pourquoi.
Code : Tout sélectionner
$hWndTV = ControlGetHandle("Table des matières", "", "[CLASS:SysTreeView32]")
$fi = _GUICtrlTreeView_GetFirstItem($hWndTV)
$si = _GUICtrlTreeView_GetNext($hWndTV, $fi)
_GUICtrlTreeView_SetChecked($hWndTV,$si, False)
La première CheckBox reste cochée ...
Re: AutoIt ne reconnaît pas les CheckBox d'un SystreeView32
Posté : ven. 13 mai 2016 21:56
par jguinch
Est-ce que l'application en question (ArcMap si je me souviens bien) est une application 64 bits ? Si c'est le cas, essai de lancer ton script en 64 bits (ou de le compiler en 64 bits), ça pourrait résoudre ton problème
Re: AutoIt ne reconnaît pas les CheckBox d'un SystreeView32
Posté : sam. 14 mai 2016 18:40
par Jules
Ok j'essaierai ça mardi

Sinon, pour savoir, comment on fait pour compiler en 64bits et pas en 32 ?
Re: AutoIt ne reconnaît pas les CheckBox d'un SystreeView32
Posté : mar. 17 mai 2016 09:37
par Jules
Mon ordinateur exécute de toute manière Windows 7 en 32 bits donc pas de compilation 64 bits envisageable ^^
Merci quand même
