2017-02-22 2 views
0

Я использую AutoIt и SciTE для создания сценария установки. Проблема, с которой я сталкиваюсь, заключается в том, что есть дерево меню для выбора функций. Я могу выбрать все treeview (SysTreeView32), но не знаю, как попасть внутрь, чтобы проверить флажки, не делая движения мыши и не щелкая (не отличный вариант).SciTE Script - Как попасть внутрь элемента управления Tree для установки флажков

Treeview выглядит следующим образом:

Treeview Image

для Info Control от AutoIT как это:

Control Info

Я уверен, что это возможно, просто не могу понять как это сделать. Это моя первая попытка такого сценария. По какой-то причине создание файла ответов не работает для этого 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. И, когда эта процедура запускается, выбранный элемент выделяется/выбирается - я это вижу. Таким образом - он просто не возвращает правильное значение.

ответ

0
Opt('WinTitleMatchMode', 2) 
$hWnd = WinGetHandle("InstallShield Wizard") ; Notice the correct title 
$hTree = ControlGetHandle($hWnd, '', "[CLASS:SysTreeView32;INSTANCE:1]") 

; == Now you can interact with the treeview with functions from "GuiTreeView.au3" 

EDIT:

Попробуйте

; Select the item so: 
_GUICtrlTreeView_SelectItem($hTree, $hItem, $TVGN_CARET) 

; Get checked state: 
_GUICtrlTreeView_GetChecked($hTree, $hItem) 

Для более deatails читать AutoIt помощь.

+0

У меня есть схож с этим (сейчас) после нескольких часов попыток - я опубликую отредактированное выше. Мне не нравится, что я не могу определить, проверено ли оно. В противном случае я мог бы случайно отменить выбор. :( – Andrew

Смежные вопросы