Я использую AutoIt и SciTE для создания сценария установки. Проблема, с которой я сталкиваюсь, заключается в том, что есть дерево меню для выбора функций. Я могу выбрать все treeview (SysTreeView32), но не знаю, как попасть внутрь, чтобы проверить флажки, не делая движения мыши и не щелкая (не отличный вариант).SciTE Script - Как попасть внутрь элемента управления Tree для установки флажков
Treeview выглядит следующим образом:
для Info Control от AutoIT как это:
Я уверен, что это возможно, просто не могу понять как это сделать. Это моя первая попытка такого сценария. По какой-то причине создание файла ответов не работает для этого exe. Итак - это единственный мой выход, чтобы создать несколько бесшумную установку (не более тихий, но, по крайней мере, автоматизированный).
* EDIT - текущее состояние вещей *
Я выяснить, как сделать некоторые из этого, но я до сих пор не могу понять, если элементы выбраны перед доступом к ней. Так что, поскольку он переключается, я могу отключить функцию, которую я хочу!
$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}')
Я не думаю, что я должен был бы отправить пространство, так как я послал ClickItem, но так кажется.
Я мог бы также сделать это:
ControlTreeView($hWnd, '', $tvCtl, 'Select', '#0')
ControlSend($hWnd, '', $tvCtl, ' ')
Это переключит первый. Итак - я могу подсчитать их все и сделать так.
Но когда я проверяю «IsEnabled» или «IsChecked», он всегда говорит «НЕТ». Итак - я не могу проверить те, которые мне нужны. Я должен надеяться, что их статус - это то, что я ожидаю.
Вот как я проверяю "IsChecked" и "IsEnabled":
If ControlCommand($hWnd, '', $logTool, 'IsEnabled') then
ConsoleWrite('Log Tool - IsEnabled' & @CRLF)
Else
ConsoleWrite('Log Tool - NOTEnabled' & @CRLF)
EndIf
и
If ControlCommand($hWnd, '', $logTool, 'IsChecked') then
ConsoleWrite('Log Tool - IsChecked' & @CRLF)
Else
ConsoleWrite('Log Tool - NOTChecked' & @CRLF)
EndIf
Он всегда возвращается NOTEnabled и NOTChecked. Я убедился, что я выполнил ту же процедуру выше: FindItem, SelectItem, ClickItem. И, когда эта процедура запускается, выбранный элемент выделяется/выбирается - я это вижу. Таким образом - он просто не возвращает правильное значение.
У меня есть схож с этим (сейчас) после нескольких часов попыток - я опубликую отредактированное выше. Мне не нравится, что я не могу определить, проверено ли оно. В противном случае я мог бы случайно отменить выбор. :( – Andrew