Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » SysTreeView32 - как с этим работать?

Ответить
Настройки темы
SysTreeView32 - как с этим работать?

Аватара для Firebolt

Старожил


Сообщения: 260
Благодарности: 13

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: png 1.PNG
(26.0 Kb, 104 просмотров)
Тип файла: png 2.PNG
(27.1 Kb, 97 просмотров)
Прикрепляю две фотки: 1 - то, какое окно открывается; 2 - то что нужно в этом окне сделать - выбрать в дополнительных интерфейсах установку казахского интерфейса. Как мне грамотно это сделать?

Отправлено: 14:40, 28-07-2009

 

Аватара для sacredboy

Старожил


Сообщения: 360
Благодарности: 12

Профиль | Отправить PM | Цитировать


И еще $TVGN_FIRSTVISIBLE не понял что это за переменная, вернее ее значение.

Отправлено: 12:30, 15-09-2009 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата sacredboy:
$TVGN_FIRSTVISIBLE не понял что это за переменная »
см. справку по _GUICtrlTreeView_SelectItem

Отправлено: 11:05, 16-09-2009 | #12


Аватара для sacredboy

Старожил


Сообщения: 360
Благодарности: 12

Профиль | Отправить PM | Цитировать


amel27, вот по твоему примеру написал:

Код: Выделить весь код
; Скрипт установки Winamp

#include <GuiTreeView.au3>
#include <WindowsConstants.au3>
#include <GuiMenu.au3>
#include <SendMessage.au3>

Run ("C:\Install\winamp556_full_en-us.exe")
Sleep (1000)
WinWaitActive ("Winamp Installer")
Sleep (1000)
ControlClick ("Winamp Installer", "", "Button2")
Sleep (1000)
ControlClick ("Winamp Installer", "", "Button2")
Sleep (1000)
ControlSend ("Winamp Installer", "Destination Folder","Edit1", @ProgramFilesDir & "\Winamp 5.5.6")
Sleep (1000)
ControlClick ("Winamp Installer", "", "Button2")
Sleep (1000)
ControlCommand ("Winamp Installer", "Select the type of install:", "ComboBox1", "SelectString", "Custom")

$WinTitle = "Winamp Installer"
$WinText = "Choose Components"

; ищем элемент окна и последовательно нужный пункт списка
$hDTCtrl = ControlGetHandle ($WinTitle, "", "SysTreeView321")
$hDTItem_1 = _GUICtrlTreeView_FindItem ($hDTCtrl, "Winamp Agent")
$hDTItem_2 = _GUICtrlTreeView_FindItem ($hDTCtrl, "Multimedia Engine")
$hDTIt_1 = _GUICtrlTreeView_FindItem ($hDTCtrl, "Video Playback", False, $hDTItem_2)

; активируем окно
WinActivate ($WinTitle, $WinText)
WinWaitActive ($WinTitle, $WinText)

; переходим к нужному пункту списка
_GUICtrlTreeView_SelectItem ($hDTCtrl, $hDTItem_1, $TVGN_FIRSTVISIBLE)
_GUICtrlTreeView_ClickItem ($hDTCtrl, $hDTItem_1, "left", True) ; снимает чекбокс Winamp Agent
Sleep (1000)
_GUICtrlTreeView_Expand ($hDTCtrl, $hDTItem_2, $TVGN_FIRSTVISIBLE) ; раскрывает ветку Multimedia Engine
Sleep (1000)
_GUICtrlTreeView_ClickItem ($hDTCtrl, $hDTItem_2, "left", True) ; не снимает чекбокс Video Playback
Можешь сказать в чем проблема?

Отправлено: 14:12, 18-09-2009 | #13


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


sacredboy, так понятней?
Код: Выделить весь код
#Include <GuiTreeView.au3>

$WinTitle = "Winamp Installer"
$WinText  = "Choose Components"

; активируем окно
WinActivate($WinTitle, $WinText)
WinWaitActive($WinTitle, $WinText)

$hDTCtrl = ControlGetHandle ($WinTitle, "", "SysTreeView321")

_GUICtrlTreeView_ClickItemEx($hDTCtrl, "Winamp Agent", 0, "left", True) ; снимает чекбокс Winamp Agent
_GUICtrlTreeView_ClickItemEx($hDTCtrl, "Multimedia Engine|Video Playback", 0, "left", True) ; раскрывает ветку Video Playback

Func _GUICtrlTreeView_ClickItemEx($hCtrl, $sItemPath, $hStart = 0, $sButton = "left", $fMove = False, $iClicks = 1, $iSpeed = 0)
    Local $iRet, $hItem = _GUICtrlTreeView_FindItemEx($hCtrl, $sItemPath, $hStart)
    If Not($hItem) Then Return SetError(1, 0, False)

    $iRet = _GUICtrlTreeView_SelectItem($hCtrl, $hItem, $TVGN_FIRSTVISIBLE)
    If Not($iRet) Then Return SetError(2, 0, False)

    _GUICtrlTreeView_ClickItem ($hCtrl, $hItem, $sButton, $fMove, $iClicks, $iSpeed)
    Return True
EndFunc
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:19, 18-09-2009 | #14


Аватара для ku7mich

Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Отправить PM | Цитировать


Никак не соображу...
Надо с начала списка проверять по очереди все элементы, если попадается отмеченный элемент, то соответствующее действие. И так пока весь список не прошерстит.

-------
"Как странно – когда исчезает темнота, перестаешь видеть свет!" (С. Лукьяненко)


Отправлено: 16:21, 28-10-2009 | #15


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


ku7mich

в посте #2 ищется пошагово - каждый промежуточный узел/ветка вплоть до той, которая содежит нужный элемент... а не "все элементы"

в посте #14 в UDF сразу передается весь "путь" к нужному элементу

Отправлено: 12:38, 29-10-2009 | #16


Аватара для ku7mich

Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: jpg Tree_01.jpg
(19.4 Kb, 16 просмотров)
Тип файла: jpg Tree_02.jpg
(20.8 Kb, 14 просмотров)

Код: Выделить весь код
#include <GUIConstants.au3>
#Include <GuiTreeView.au3>
#include <GuiTab.au3>

$WinTitle = "Win_01"
WinWaitActive($WinTitle)

$hTab = ControlGetHandle($WinTitle,"","SysTabControl321")
_GUICtrlTab_ClickTab($hTab, 4)

$hTreeView = ControlGetHandle ($WinTitle, "", "SysTreeView321")
; раскрываю всё дерево - раскрываются только отмеченные галочкой пункты, что меня вполне устраивает
_GUICtrlTreeView_Expand($hTreeView, True)
; после перехода на закладку с деревом и его раскрытием фокус отдаётся кнопке "Properties"
; фокус передаю дереву
ControlFocus($WinTitle, "", $hTreeView)
После раскрытия всего дерева и передачи ему фокуса, под фокус попадает последний раскрытый пункт, в моём случае это AKS_PRC, а надо на первый. Но передать фокус надо не по названию пункта, а по его индексу в дереве. Как?

Нашёл, вот этим вот передал фокус на первый пункт в дереве:
Код: Выделить весь код
ControlTreeView ($WinTitle,"",$hTreeView, "Select", "#0")

-------
"Как странно – когда исчезает темнота, перестаешь видеть свет!" (С. Лукьяненко)


Последний раз редактировалось ku7mich, 01-11-2009 в 12:36.


Отправлено: 12:04, 01-11-2009 | #17


Новый участник


Сообщения: 3
Благодарности: 1

Профиль | Отправить PM | Цитировать


Немного переделал скрип который во 2 сообщении под свое меню, установка аимп удаление лишних языков кроме русского:

Код: Выделить весь код
WinWait($WinTitle, "Компоненты устанавливаемой программы")
WinActivate($WinTitle, "Компоненты устанавливаемой программы")
WinWaitActive($WinTitle, "Компоненты устанавливаемой программы")
ControlCommand($WinTitle,"Выберите тип установки:","ComboBox1","SelectString","Полная")
#include <GuiTreeView.au3>
$WinTitle = "AIMP2 Setup"
$hDTCtrl = ControlGetHandle($WinTitle, "", "SysTreeView321")
$hDTItem = _GUICtrlTreeView_FindItem($hDTCtrl, "Языки интерфейса")
$hDTIt_1 = _GUICtrlTreeView_FindItem($hDTCtrl, "Русский (по умолчанию)")
; переходим к нужному пункту списка
_GUICtrlTreeView_SelectItem($hDTCtrl, $hDTItem, $TVGN_FIRSTVISIBLE)
; выключаем ветку Языки интерфейса
_GUICtrlTreeView_ClickItem ($hDTCtrl, $hDTItem, "left", True)
; переходим к нужному пункту списка
_GUICtrlTreeView_SelectItem($hDTCtrl, $hDTIt_1, $TVGN_FIRSTVISIBLE)
; включаем русский язык
_GUICtrlTreeView_ClickItem ($hDTCtrl, $hDTIt_1, "left", True)
Вроде получилось совсем просто, может кому поможет, ибо SysTreeView32 такая заноза...
В винампе собственно так же только изменить переменные.
sacredboy ваш к сожалению пол дня гонял/удалял, пол кода удалил он мне все равно делал не то что нужно, но работал.

Последний раз редактировалось WoRG, 25-03-2010 в 14:46.

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:22, 25-03-2010 | #18


Аватара для semiono

Ветеран


Сообщения: 842
Благодарности: 33

Профиль | Отправить PM | Цитировать




Нужно убрать галочку 'Show shadows under mouse pointer'

Запуск консоли можно выполнить примерно так:
control sysdm.cpl,,-1

Кнопка "Custom" насколько я понял устанавливается сама при любом клике в SysTreeView32, хотя проверку не помешает зделать.
Меня интересует английская "моя" версия только, если с этим есть различия. Вообщем чтоб у меня работало.

-------
Полезное сообщение

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:44, 26-12-2010 | #19


Аватара для semiono

Ветеран


Сообщения: 842
Благодарности: 33

Профиль | Отправить PM | Цитировать


Что касается именно 'Show shadows under mouse pointer', решено!
Через вызов апи:
Код: Выделить весь код
invoke SystemParametersInfo,SPI_SETDROPSHADOW,FALSE,NULL,SPIF_UPDATEINIFILE
Иногда бывает проще там где вовсе не ждёшь!
SPI_SETDROPSHADOW = 0x1025

-------
Полезное сообщение


Отправлено: 00:50, 27-12-2010 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » SysTreeView32 - как с этим работать?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
что это и как с этим бороться slava___sl Лечение систем от вредоносных программ 5 14-08-2009 22:38
Что это такое и как с этим бороться? truvo Хочу все знать 4 30-05-2009 11:45
[решено] Как создать прогу, с этим кодом rhaw AutoIt 9 05-02-2009 19:38
EventID - Event ID: 27 Как с этим бороться??? KraSSotka Устранение критических ошибок Windows 0 22-10-2008 08:36
DRM: как с этим бороться? X-SAT Хочу все знать 6 12-02-2007 02:39




 
Переход