AutoIt ne reconnaît pas les CheckBox d'un SystreeView32

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Jules
Niveau 2
Niveau 2
Messages : 17
Enregistré le : mer. 04 mai 2016 17:00
Status : Hors ligne

AutoIt ne reconnaît pas les CheckBox d'un SystreeView32

#1

Message par Jules »

Bonjour,

Je suis actuellement confronté à un problème. Je dois décocher toutes les cases d'un SysTreeView32, présenté ici :
Image

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 ? :)
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: AutoIt ne reconnaît pas les CheckBox d'un SystreeView32

#2

Message 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 ? :mrgreen:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Jules
Niveau 2
Niveau 2
Messages : 17
Enregistré le : mer. 04 mai 2016 17:00
Status : Hors ligne

Re: AutoIt ne reconnaît pas les CheckBox d'un SystreeView32

#3

Message 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.
Avatar du membre
TomAijerrie
Niveau 5
Niveau 5
Messages : 192
Enregistré le : lun. 02 juin 2014 09:55
Localisation : Lyon
Status : Hors ligne

Re: AutoIt ne reconnaît pas les CheckBox d'un SystreeView32

#4

Message 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
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: AutoIt ne reconnaît pas les CheckBox d'un SystreeView32

#5

Message 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")
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Jules
Niveau 2
Niveau 2
Messages : 17
Enregistré le : mer. 04 mai 2016 17:00
Status : Hors ligne

Re: AutoIt ne reconnaît pas les CheckBox d'un SystreeView32

#6

Message 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 ...
Jules
Niveau 2
Niveau 2
Messages : 17
Enregistré le : mer. 04 mai 2016 17:00
Status : Hors ligne

Re: AutoIt ne reconnaît pas les CheckBox d'un SystreeView32

#7

Message 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 ...
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: AutoIt ne reconnaît pas les CheckBox d'un SystreeView32

#8

Message 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
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Jules
Niveau 2
Niveau 2
Messages : 17
Enregistré le : mer. 04 mai 2016 17:00
Status : Hors ligne

Re: AutoIt ne reconnaît pas les CheckBox d'un SystreeView32

#9

Message par Jules »

Ok j'essaierai ça mardi :)
Sinon, pour savoir, comment on fait pour compiler en 64bits et pas en 32 ?
Jules
Niveau 2
Niveau 2
Messages : 17
Enregistré le : mer. 04 mai 2016 17:00
Status : Hors ligne

Re: AutoIt ne reconnaît pas les CheckBox d'un SystreeView32

#10

Message 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 :)
Répondre