J'utilise AutoIt et SciTE pour créer un script d'installation. Le problème que je rencontre est qu'il existe un menu arborescent pour la sélection des fonctionnalités. Je peux sélectionner l'ensemble de l'arborescence (SysTreeView32), mais je ne suis pas sûr de savoir comment y accéder pour cocher les cases sans faire un mouvement de la souris et cliquer (pas une excellente option).SciTE Script - Comment entrer dans un Tree Control pour cocher les cases
Le Treeview ressemble à ceci:
Info contrôle de AutoIt est comme ceci:
Je suis sûr qu'il est possible, tout ne peut pas figure comment le faire. C'est ma première tentative d'un tel script. Créer un fichier de réponses ne fonctionne pas pour cet exe pour une raison quelconque. Donc - ceci semble être mon seul moyen de créer une installation quelque peu silencieuse (pas plus silencieuse, mais au moins automatisée).
* EDIT - état actuel des choses *
Je découvriez comment le faire partie de cela, mais je ne peux toujours pas comprendre si les éléments sont sélectionnés avant d'y accéder. Alors - puisque ça bascule, je pourrais désactiver une fonctionnalité que je veux!
$hWnd = WinWaitActive($WindowTitle, 'Select Features')
$tvCtl = ControlGetHandle($WindowTitle, '', 'SysTreeView321')
$firstItem = _GUICtrlTreeView_FindItem($tvCtl, 'eBooks')
_GUICtrlTreeView_SelectItem($tvCtl, $firstItem, $TVGN_FIRSTVISIBLE)
_GUICtrlTreeView_ClickItem($tvCtl, $firstItem, "left", True, 1)
Send('{SPACE}')
Je ne pense pas que je devrais envoyer l'espace depuis que j'envoyé le ClickItem, mais semble donc.
Je pourrais aussi le faire:
ControlTreeView($hWnd, '', $tvCtl, 'Select', '#0')
ControlSend($hWnd, '', $tvCtl, ' ')
Cela va basculer le premier. Donc - je peux les compter tous et faire comme ça. Mais quand je vérifie pour "IsEnabled" ou "IsChecked", il dit toujours NON. Donc - je ne peux pas vérifier ceux dont j'ai seulement besoin. Je dois espérer que leur statut est ce que j'attends.
Voici comment je vérifie "IsChecked" et "IsEnabled":
If ControlCommand($hWnd, '', $logTool, 'IsEnabled') then
ConsoleWrite('Log Tool - IsEnabled' & @CRLF)
Else
ConsoleWrite('Log Tool - NOTEnabled' & @CRLF)
EndIf
et
If ControlCommand($hWnd, '', $logTool, 'IsChecked') then
ConsoleWrite('Log Tool - IsChecked' & @CRLF)
Else
ConsoleWrite('Log Tool - NOTChecked' & @CRLF)
EndIf
Il revient toujours NOTEnabled et NOTChecked. Je me suis assuré que j'ai exécuté la même procédure ci-dessus: FindItem, SelectItem, ClickItem. Et, l'élément correct est mis en surbrillance/sélectionné lorsque cette procédure est exécutée - je peux le voir. Donc, ce n'est pas juste de retourner une valeur correcte.
Je n'ai similaire à cela (maintenant) après des heures de tentatives - je posterai la modification ci-dessus. Je n'aime pas que je ne puisse pas déterminer si c'est "vérifié". Sinon, je pourrais accidentellement désélectionner quelque chose. :( – Andrew