Что нового

[Автоматизация] Отметить элемент в SysTreeView32?

schennoy

Новичок
Сообщения
1
Репутация
0
Всем привет!
Такая проблема - не удается проверить статус элемента в SysTreeView32 (отмечен галочкой или нет) - всегда выдает что он пустой.
Использую ControlTreeView

dc78119248697c06b2cdee750603a789.jpg

В спойлере код для отметки всех галок в этом окне
Код:
WinWaitActive("Настройка классического","")
Send("{TAB 5}")
sleep(1000)
For $i=1 to 13
$u = ControlTreeView("Настройка классического","Мелкие значки","[CLASS:SysTreeView32; INSTANCE:1]","IsChecked","#"&$i) 
	If ($u <> "0") then
		Send("{SPACE}")
	Endif
Send("{DOWN}")
next
ControlClick ("", "", "[CLASS:Button; INSTANCE:5]")	;Кнопка Ок
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
schennoy
Честно говоря, странно. Текст возвращает без проблем, а состояние Checkbox`ов возвращает False не зависимо от их состояния.
Код:
#include <GuiTreeView.au3>

$hWin = WinWait('Настройка классического меню', '', 5)
If Not IsHWnd($hWin) Then
	MsgBox(16, 'error-1', 'error-1')
	Exit
EndIf

$hTreeView = ControlGetHandle($hWin, '', '[CLASS:SysTreeView32; INSTANCE:1]')
If Not IsHWnd($hWin) Then
	MsgBox(16, 'error-2', 'error-2')
	Exit
EndIf

$iCount = _GUICtrlTreeView_GetCount($hTreeView)

$hItem = _GUICtrlTreeView_GetFirstItem($hTreeView)
MsgBox(64, 'строка 1', _GUICtrlTreeView_GetText($hTreeView, $hItem) & @LF & _
		'IsChecked: ' & _GUICtrlTreeView_GetChecked($hTreeView, $hItem) & ' ???', 2)

For $i = 1 To $iCount - 1
	$hItem = _GUICtrlTreeView_GetNext($hTreeView, $hItem)
	MsgBox(64, 'строка ' & $i + 1, _GUICtrlTreeView_GetText($hTreeView, $hItem) & @LF & _
			'IsChecked: ' & _GUICtrlTreeView_GetChecked($hTreeView, $hItem) & ' ???', 3)
Next
 

Futurebear

Знающий
Сообщения
29
Репутация
6
[Автоматизация] Re: [Автоматизация] Отметить элемент в SysTreeView32?

Приветствую всех обитателей форума. Недавно узнал о языке AutoIT и в самом начале его изучения наткнулся на грабли. (Прошу прощения если начал использовать уже создаанную тему, но мне кажется проблема схожа )
Хотел поробовать автоматизировать установку настроек IE, но не как не могу орпеделить состояние checkbox( к примеру "надежные узлы -> Проверка https" ), пользовался _GUICtrlButton_GetCheck и GUICtrlGetState. Есть ли какие другие варианты?
 

Futurebear

Знающий
Сообщения
29
Репутация
6
:ok: Спасибо что накинулись все с помощью. После 10 раза просмотра справки :idea: нашел ControlCommand, которая меня спасла. Ну и еще раз прошу прощения что все таки не в ту тему написал :-\
 

Futurebear

Знающий
Сообщения
29
Репутация
6
madmasles
Честно говоря, странно. Текст возвращает без проблем, а состояние Checkbox`ов возвращает False не зависимо от их состояния.
По этому поводу интересное замечание, если в текст вставить
Код:
For $i = 1 To $iCount - 1
               $hItem = _GUICtrlTreeView_GetNext($hTreeView, $hItem)
	           _GUICtrlTreeView_SetChecked($hTreeView, $hItem,  True)
               MsgBox(64, 'строка ' & $i + 1,_GUICtrlTreeView_GetText($hTreeView, $hItem) & @LF & _
              'IsChecked: ' & _GUICtrlTreeView_GetChecked($hTreeView, $hItem) & ' ???', 3)
Next

То значение вернется True, но checkbox не установится :wacko:
 

Futurebear

Знающий
Сообщения
29
Репутация
6
Я думаю тему можно закрывать, потому как наверно вопрос решен.
Для определения статуса элемента SysTreeView32, в данном случае необходимо в место
_GUICtrlTreeView_GetChecked($hTreeView, $hItem)
использовать
_GUICtrlTreeView_GetImageIndex ($hTreeView, $hItem)

соответсвенно результат не true/false, а 0/1
:guitar:
 
Верх