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

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

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

Аватара для Firebolt

Старожил


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

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


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

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

 

Googler


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

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


Firebolt, думаю где-то так:
Код: Выделить весь код
#include <GuiMenu.au3>
#include <GuiTreeView.au3>
#Include <SendMessage.au3>
#Include <WindowsConstants.au3>

$WinTitle= "1С:Предприятие 8.1"
$WinText = "Выберите компоненты программы"

WinWait($WinTitle, $WinText)
; ищем элемент окна и последовательно нужный пункт списка
$hDTCtrl = ControlGetHandle($WinTitle, "", "SysTreeView321")
$hDTItem = _GUICtrlTreeView_FindItem($hDTCtrl, "Дополнительные интерфейсы")
$hDTIt_1 = _GUICtrlTreeView_FindItem($hDTCtrl, "Казахский", False, $hDTItem)
; активируем окно
WinActivate($WinTitle, $WinText)
WinWaitActive($WinTitle, $WinText)
; переходим к нужному пункту списка
_GUICtrlTreeView_SelectItem($hDTCtrl, $hDTIt_1, $TVGN_FIRSTVISIBLE)
_GUICtrlTreeView_ClickItem ($hDTCtrl, $hDTIt_1, "left", True)
; вызываем контекстное меню
$aRect = _GUICtrlTreeView_DisplayRect($hDTCtrl, $hDTIt_1, True)
ControlClick($WinTitle, $WinText, $hDTCtrl, "left", 1, $aRect[0]-10, $aRect[1]+5)
WinWait("[CLASS:#32768]")
; выбираем нужный пункт контекстного меню
$hWnd  = WinGetHandle("[CLASS:#32768]")
$hMenu = _SendMessage($hWnd, $MN_GETHMENU, 0, 0)
$aRect = _GUICtrlMenu_GetItemRect($hWnd, $hMenu, 0)
MouseClick("left", $aRect[0]+20, $aRect[1]+15, 1, 1)
З.Ы. 1С под рукой нет, поэтому проверял на офисе 2003
Это сообщение посчитали полезным следующие участники:

Отправлено: 08:52, 29-07-2009 | #2



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

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


Аватара для Firebolt

Старожил


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

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


amel27, ничего себе! Если честно, мне тут мало чего понятно. Но спасибо большое!

Отправлено: 09:26, 29-07-2009 | #3


Googler


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

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


Цитата Firebolt:
Если честно, мне тут мало чего понятно. »
на самом деле, последние два блока (вызов контекстного меню/выбор пункта) можно сделать на одних Send'ах... но интересно как раз обойтись без них...

Отправлено: 17:14, 29-07-2009 | #4


Аватара для Firebolt

Старожил


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

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


amel27, да вот именно! А можно все на сэндах сделать. Так я и сделал сам, на одних сэндах. Но хочу изучить язык глубже, так что ваш пример мне в этом очень поможет.

Отправлено: 20:56, 29-07-2009 | #5


Аватара для sacredboy

Старожил


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

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


amel27, а с такими окнами тоже по такому же принципу работать?

Как быть с такими чекбоксами? Какой функцией их снимать? Вроде и чекбоксы но AutoIT Window Info определяет их как SysTreeView32.



Куда ни наведи везде INSTANCE один и тот же SysTreeView32.

И как раскрыть деревья внутри которых такие же чекбоксы?

Отправлено: 17:52, 13-09-2009 | #6


Googler


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

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


Цитата sacredboy:
а с такими окнами тоже по такому же принципу работать? »
а почему бы и нет?.. есть проблемы?.. с виду выглядит аналогично

Цитата sacredboy:
как раскрыть деревья внутри которых такие же чекбоксы »
_GUICtrlTreeView_Expand/_GUICtrlTreeView_ExpandedOnce, для того, чтобы работать с отдельным элементом не обязательно раскрывать ветку - _GUICtrlTreeView_FindItem делает это автоматически

Отправлено: 03:49, 14-09-2009 | #7


Аватара для sacredboy

Старожил


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

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


amel27, а вот такой вопрос, ты говоришь что _GUICtrlTreeView_Expand/_GUICtrlTreeView_ExpandedOnce раскрывают все ветки (т.е. по сути нажимают плюсы для раскрытия всего дерева), а _GUICtrlTreeView_FindItem может выборочно снимать чекбоксы, если я правильно понял. Так вот, а как указывать конкретную ветку если AutoIT Window Info определяет такие ветки, в моем случае Multimedia Engine, Winamp Library, User Interface Extension и Visualisation одинаково, т.е. [CLASS:SysTreeView32; INSTANCE:1]?

Отправлено: 10:08, 14-09-2009 | #8


Googler


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

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


Цитата sacredboy:
_GUICtrlTreeView_FindItem может выборочно снимать чекбоксы, если я правильно понял »
неправлильно понял - _GUICtrlTreeView_FindItem переходит по имени к нужному элементу определенной ветки, а ставит/снимает чекбокс обычный MouseClick

Отправлено: 10:31, 14-09-2009 | #9


Аватара для sacredboy

Старожил


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

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


То есть, в моему случае:

_GUICtrlTreeView_Expand - раскроет ветку Winamp Library
_GUICtrlTreeView_FindItem - найдет чекбокс Winamp Media Library
ControlClick - поставит/снимет чекбокс.



Верно?

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



Компьютерный форум 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




 
Переход