Voici un exemple de script provenant du forum Anglais, qui permet d'afficher un arbre complet de l'ordinateur, de ces disques dur et de ses dossiers (voir image jointe).
Je me permets de relancer ce sujet, car je suis très fortement interessé par ce script, mais il ne fonctionne pas chez moi.
En effet, lorsque je lance ShellTristateTreeDemo.au3, il m'affiche :
C:\ShellTristateTreeView\ShellTristateTreeView.au3(57,78) : ERROR: $CLR_NONE previously declared as a 'Const'
If Not IsDeclared("CLR_NONE") Then Global Const $CLR_NONE= 0xFFFFFFFF
C:\ShellTristateTreeView\ShellTristateTreeView.au3(197,40) : WARNING: $TVN_ITEMEXPANDING: possibly used before declaration.
Case $TVN_ITEMEXPANDING
C:\ShellTristateTreeView\ShellTristateTreeView.au3(533,33) : WARNING: $TVM_SETITEM: possibly used before declaration.
SendMessage($hWnd, $TVM_SETITEM,
C:\ShellTristateTreeView\ShellTristateTreeView.au3(542,33) : WARNING: $TVM_GETITEM: possibly used before declaration.
SendMessage($hWnd, $TVM_GETITEM,
C:\ShellTristateTreeView\ShellTristateTreeView.au3(197,40) : ERROR: $TVN_ITEMEXPANDING: undeclared global variable.
Case $TVN_ITEMEXPANDING
Je ne comprends pas bien pourquoi ?
Et d'une manière générale, quelqu'un pourrait-il expliquer quel est la démarche générale de création d'un tel script, sans rentrer dans les détails tel que utilisation d'images pour les checkBox personnalisées, les icônes à utiliser....etc...un truc simple, du style :
1) je crée un TreeView
2) je recherche les dossiers, sous-dossiers et fichiers que je place dans un tableau
3) je fais correspondre les éléments de ce tableau à mes checkBox
4) l'utilisation des sélections de checkbox sont possibles grâce à tel et tel procédés...
....etc
Il est vrai que ce script est génial (quand il fonctionne), mais permet difficilement de comprendre la méthodologie utilisée pour résoudre le problème initial, à savoir afficher les dossiers, sous-dossiers et fichiers en arborescence, comme un explorateur windows.
Merci d'avance à ceux ou celles qui me permettront d'avancer en ce sens...
Je me permets de relancer ce sujet, car j'utilisais ce fichier en version 3.3.8.1 et j'ai mis à jour autoit avec la version 3.3.14.2 et ca ne fonctionne plus, il y a des erreurs:
"C:\Program Files (x86)\AutoIt3\Include\ShellTristateTreeView.au3"(56,84) : error: $LR_LOADFROMFILE previously declared as a 'Const'.
If Not IsDeclared("LR_LOADFROMFILE") Then Global Const $LR_LOADFROMFILE = 0x0010
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~^
"C:\Program Files (x86)\AutoIt3\Include\ShellTristateTreeView.au3"(57,89) : error: $LR_LOADTRANSPARENT previously declared as a 'Const'.
If Not IsDeclared("LR_LOADTRANSPARENT") Then Global Const $LR_LOADTRANSPARENT = 0x0020
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~^
"C:\Program Files (x86)\AutoIt3\Include\ShellTristateTreeView.au3"(58,90) : error: $LR_CREATEDIBSECTION previously declared as a 'Const'.
If Not IsDeclared("LR_CREATEDIBSECTION") Then Global Const $LR_CREATEDIBSECTION = 0x2000
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~^
"C:\Program Files (x86)\AutoIt3\Include\ShellTristateTreeView.au3"(60,75) : error: $IMAGE_BITMAP previously declared as a 'Const'.
If Not IsDeclared("IMAGE_BITMAP") Then Global Const $IMAGE_BITMAP = 0
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~^
"C:\Program Files (x86)\AutoIt3\Include\ShellTristateTreeView.au3"(62,73) : error: $GWL_STYLE previously declared as a 'Const'.
If Not IsDeclared("GWL_STYLE") Then Global Const $GWL_STYLE = -16
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~ ~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~^
J'ai essayé de rechercher une nouvelle version ici et sur le forum anglais, je n'ai pas trouvé?
Pouvez-vous m'aider ? Ou existe-il une nouvelle méthode pour pouvoir avoir des cases avec trois états ?
;If Not IsDeclared("LR_LOADFROMFILE") Then Global Const $LR_LOADFROMFILE = 0x0010
;If Not IsDeclared("LR_LOADTRANSPARENT") Then Global Const $LR_LOADTRANSPARENT = 0x0020
;If Not IsDeclared("LR_CREATEDIBSECTION") Then Global Const $LR_CREATEDIBSECTION = 0x2000
;If Not IsDeclared("CLR_NONE") Then Global Const $CLR_NONE = 0xFFFFFFFF
;If Not IsDeclared("IMAGE_BITMAP") Then Global Const $IMAGE_BITMAP = 0
If Not IsDeclared("VK_SPACE") Then Global Const $VK_SPACE = 32
;If Not IsDeclared("GWL_STYLE") Then Global Const $GWL_STYLE = -16
En fait, ces constantes sont déjà déclarées dans winapiconstants.au3
Fonctionne sous 3.3.12.0
Cordialement,
Walkson "Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Je relance une nouvelle fois le sujet
J'utilise toujours le fichier en version 3.3.14.5, il fonctionne correctement en x86, par contre il y a des soucis lorsque mon script est exécuté en x64.
Etant donné qu'il y a également des incohérences dans l'arborescence qui est crée, je me demande s'il n'y a pas un autre soucis ailleurs, notamment dans la gestion du treeview.
En faisant des recherches, le "handle" des éléments est de forme: 0x03506D86 (8 caractères) pour du x86 et de forme: 0x00000000042CB1C0 (16 caractères) pour du x64.
Est-ce cela qui pose problème ?
Avez-vous déjà eu ce genre de comportement ? Des pistes ?
Il y a un comportement identique avec l'aide de "_GUICtrlTreeView_AddChild".
Après compilation en x64, l'arborescence est différente de celle affichée en x86.
Edit: J'ai trouvé pour avoir de nouveau une arborescence correct en x64, par contre, l'UDF pour le tristate ne fonctionne toujours pas en x64.
J'ai cherché et testé pas mal de chose sur le forum anglais, sans succès